2023-10-29-第三阶段
2023-11-08 本文已影响0人
护念
1. 多行字符串,用``实现
str := `
我伟大的祖国
愈来愈强大
`
fmt.Println(str)
// 我伟大的祖国
// 愈来愈强大
2. 字符串遍历字符,用range
因为一个中文字符占3-4个字节
str1 := "hello 中国"
for i := 0; i < len(str1); i++ {
fmt.Printf("%d -> %c\n", i, str1[i])
}
for index, val := range str1 {
fmt.Printf("%d -> %c\n", index, val)
}
//0 -> h
//1 -> e
//2 -> l
//3 -> l
//4 -> o
//5 ->
//6 -> ä
//7 -> ¸
//8 ->
//9 -> å
//10 ->
//0 -> h
//1 -> e
//2 -> l
//3 -> l
//4 -> o
//5 ->
//6 -> 中
//9 -> 国
3. 类型转换
go中没有隐式转换,有的是强制转换,转换语法为
// T(xxT val)
// 比如字符串转[]byte
str := "abc"
b := []byte(str)
// []byte转字符串
str1 := string(b)
4. 变量,在函数外面不能使用 := 方式
package main
import "fmt"
var a := 3 // 错误写法
var a = 3 // 正确写法 这里会自动类型推断 且这里的变量可以不使用
func main() {
}
5. 常量用const 定义的时候必须赋值
// 常量定义后 值不改变
package main
// const a // 错误写法
const a = 3 // 正确写法
func main() {
}
6.iota 与const结合使用
每次const的时候 iota重置为0,然后依次递增 1,2,3,4等,通常用于实现一些常数设置
const (
_ = iota // 匿名变量
KB = 1 << (iota * 10) // iota 1 10位 1024
MB = 1 << (iota * 10) // iota 2 20位 1024 * 1024
GB = 1 << (iota * 10) // iota 3 30位 1024 * 1024 * 1024
)
7. go的工程哲学,少就是多
不过分的设计