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的工程哲学,少就是多

不过分的设计

上一篇 下一篇

猜你喜欢

热点阅读