104.【GoLang基础】(七)

简介: 104.【GoLang基础】
(5).遍历string 💥

Go中得到字符串是一个字节的切片,可以通过将其内容封装在""中来创建字符串,Go中的字符串是Unicode兼容的,并且是UTF-8编码,字符串是一些字节的集合

默认打印的是ascll码对应的十进制,我们需要进行%c接收

字符串一旦被定义是不能被修改的,因为字符串里面的字节对应的是byte

第一种遍历方式

package main
import "fmt"
/*
 打印一个9*9
*/
func main() {
  str := "hello,jsxs"
  println(str)
  // 获取字符串的长度 len
  for i := 0; i < len(str); i++ {
    fmt.Printf("%c\t", str[i]) //如果我们输出的话,会直接走向ascll码的十进制;所以我们要对其进行格式转化。
  }
}

第二种遍历方式

package main
import "fmt"
/*
 打印一个9*9
*/
func main() {
  str := "hello,jsxs"
  println(str)
  // 获取字符串的长度 len
  for i := 0; i < len(str); i++ {
    fmt.Printf("%c\t", str[i]) //如果我们输出的话,会直接走向ascll码的十进制;所以我们要对其进行格式转化。
  }
  print("\n")
  // 通过range进行遍历,第一个是index,第二个是值。
  for _, v := range str {
    fmt.Printf("%c\t", v)
  }
}

(八)、函数

1.什么是函数?

  • 函数是基本的代码块,用于执行一个任务。
  • Go语言最少有一个main函数
  • 你可以通过函数来划分不同的功能,逻辑上每个函数执行的是指定的任务。
  • 函数声明告诉了编译器函数的名称,返回类型和参数

2.函数的声明和调用

func Name([变量名 变量类型]) [(返回类型)]{函数体}
  1. 有参无返回值
  2. 有参有返回值
  3. 无参无返回值
  4. 多参多返回值
package main
func printInfo4(x int, y int) (int, int) {
  return x, y
}
func printInfo() {
  println("无参无返回值")
}
func printInfo2(msg string) {
  println(msg)
}
func printInfo3(msg string) string {
  return msg
}
func main() {
  printInfo()
  printInfo2("有参无返回")
  println(printInfo3("一个有参一个返回"))
  var (
    a int
    b int
  )
  a, b = printInfo4(1, 2)
  println("多个有参多个返回", a, b)
}

3.函数的参数

(1).形式参数和实际参数

形参和实参一 一对应

package main
// 两个数字比大小
// 形式参数: 用于接受外部传入过来的参数叫做形式参数
// 实际参数  传给形参的参数叫做实际参数
func max(x, y int) int {
  if x > y {
    return x
  } else {
    return y
  }
}
func main() {
  println(max(1, 2)) //实参
}

(2).可变参数

概念: 一个函数的参数类型是确定的,但参数的个数是不确定的,就可以使用可变参数。

func Name(变量名 ...变量类型)(返回类型){
函数体
}

注意事项:

  1. 如果一个参数是可变擦书,同时还有其他的参数,可变参数要放在列表的最后
  2. 一个函数的参数列表最多只有一个可变参数
  3. 可变参数的值是一个数组,可以用for来遍历
package main
// 可变参数
func getSum(nums ...int) int { //这里的参数nums 相当于一个数组。
  sum := 0
  for i := 0; i < len(nums); i++ {
    sum += nums[i]
  }
  return sum
}
func main() {
  println(getSum(1, 2, 3, 4)) //实参
}

(3).参数的传递

按照数据的存储特点来分:

  1. 值类型的数据: 操作的是数据本身 int、string、bool、float64、array
  2. 引用类型的数据: 操作的是数据的地址 slice、map、chan

值传递

值传递: 形参改变,实参不变。 内存地址不一样,

package main
import "fmt"
func update(array2 [4]int) {
  fmt.Println(array2, "接受前的数据")
  array2[0] = 100
  fmt.Println(array2, "改变后的数据")
}
func main() {
  // 值传递: 形参改变实参不变
  var array [4]int = [4]int{1, 2, 3, 4}
  update(array)
  fmt.Println(array)
}

引用传递

形参改变,实参也改变。内存地址一样

package main
import "fmt"
func main() {
  // 切片,可以扩容的数组
  s1 := []int{1, 2, 3, 4}
  fmt.Printf("%p %d", s1, s1)
  update2(s1)
  fmt.Printf("%p %d", s1, s1)
}
func update2(s2 []int) {
  fmt.Println("传递前的参数", s2)
  s2[0] = 100
  fmt.Println("传递后的参数", s2)
}


相关文章
|
JavaScript
基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入,暂停计时,鼠标移出,继续计时
本文介绍了如何在Vue2+ElementUI和Vue3+ElementPlus项目中对`el-notification`组件增加倒计时进度条特效,并实现鼠标移入通知时暂停计时,鼠标移出时继续计时的功能。
551 0
基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入,暂停计时,鼠标移出,继续计时
|
API 网络架构
【Azure 云服务】查看Azure云服务在中国区域的VM型号大小列表(型号编码,定价层,以及CPU, Memory等)
【Azure 云服务】查看Azure云服务在中国区域的VM型号大小列表(型号编码,定价层,以及CPU, Memory等)
175 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的同城宠物帮附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的同城宠物帮附带文章源码部署视频讲解等
169 0
|
Cloud Native 安全 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第11天】 随着企业加速迈向数字化时代,云原生架构已成为推动创新和灵活性的重要驱动力。本文深入探讨了云原生技术如何为企业提供可扩展、灵活且高效的服务,同时确保了应用的快速迭代和部署。通过分析微服务、容器化、持续集成/持续部署(CI/CD)以及动态编排等关键概念,揭示了这些技术是如何协同工作,以支持企业在竞争激烈的市场环境中保持敏捷性和响应性。文章还讨论了云原生安全策略的重要性,并提出了成功实施云原生架构的最佳实践。
113 0
|
JavaScript 前端开发
js函数:函数是JS的基本组成单元,用于封装代码块以实现特定功能。理解函数的定义、调用和参数传递方式非常重要。具体案例详解
js函数:函数是JS的基本组成单元,用于封装代码块以实现特定功能。理解函数的定义、调用和参数传递方式非常重要。具体案例详解
157 1
|
存储 Cloud Native 数据管理
喜报:Apache Flink 荣获 2023 年度 SIGMOD 系统奖 !!!
在 6 月 18-23 日召开的 ACM SIGMOD 2023 峰会上,Apache Flink 荣获了本年度的系统奖(Systems Award)。
954 2
喜报:Apache Flink 荣获 2023 年度 SIGMOD 系统奖 !!!
|
编译器 程序员 C++
【C++】继承和多态
【C++】继承和多态
573 3
|
存储 Cloud Native 大数据
带你读《企业级云原生白皮书项目实战》——5.3.1 开始使用(2)
带你读《企业级云原生白皮书项目实战》——5.3.1 开始使用(2)
346 0
|
存储 分布式计算 网络协议
《zk:分布式过程协同技术详解》读书笔记
《zk:分布式过程协同技术详解》读书笔记
《zk:分布式过程协同技术详解》读书笔记
|
定位技术 Android开发 iOS开发
2014中美创客大赛 Day 1:技术简报与趋势统计
由中华人民共和国教育部国际司主办的中美青年创客大赛 Microsoft上海选拔赛于24日在同济大学设计创意学院正式开赛!来自中美两国的超过150名青年创客,组成了近30支参赛队伍,将在2日半的竞赛中完成自己的创意作品,角逐进入总决赛的宝贵名额!
408 0
2014中美创客大赛 Day 1:技术简报与趋势统计

热门文章

最新文章