string数组切片
func main() {
s1 := []string{}
s1 = append(s1, "hello1")
s2 := make([]string, 0)
s2 = append(s2, "hello2")
fmt.Println(s1, s2)
}
切片用法
- make创建切片时,初始长度为n,可以通过取下标和append;初始长度为0,只能通过append操作
func main() {
m := make([]int, 5)
m[1] = 1
m = append(m, 6)
fmt.Println(m)
m2 := make([]int, 0)
m2 = append(m2, 5)
fmt.Println(m2)
}
[0 1 0 0 0 6]
[5]
func main() {
arr := []int{1, 2, 3, 4}
arr2 := [5]int{1, 2, 3, 4}
fmt.Printf("%T, %T\n", arr, arr2)
arr3 := arr[0:4]
fmt.Printf("%T, %v\n", arr3, arr3)
arr3[1] = 6
fmt.Printf("%v, %v\n", arr3, arr)
}
字典基本用法
func main() {
m := make(map[string]int)
m["hello"] = 2
m["hello2"]++
for k, v := range m {
fmt.Println(k, v)
}
delete(m, "hello")
}
- 判断字典中是否有给定的键,用
map["key"],会返回两个值,第一个值是对应的value,第二个值是ok,表示是否存在
func main() {
m := make(map[string]int)
m["hello"] = 2
m["hello2"]++
if val, ok := m["hello1"]; ok {
fmt.Println(val)
} else {
fmt.Println("key not found")
}
}
func main() {
m := make(map[string]int)
m["hello"] = 2
m["hello2"] += 1
for key, val := range m {
fmt.Println(key, val)
}
for key := range m {
fmt.Println(key)
}
for _, val := range m {
fmt.Println(val)
}
}
sort库
func main() {
arr_int := []int{3, 5, 1, 6, 2}
sort.Ints(arr_int)
fmt.Println(arr_int)
arr_string := []string{"hello", "a", "b", "c", "h"}
sort.Strings(arr_string)
fmt.Println(arr_string)
sort.Slice(arr_int, func(i, j int) bool {
return arr_int[i] > arr_int[j]
})
fmt.Println(arr_int)
}
func main() {
arr := []int{1, 1, 2, 2, 5, 8, 9, 9, 10}
fmt.Println(sort.SearchInts(arr, 1))
fmt.Println(sort.SearchInts(arr, 2))
fmt.Println(sort.SearchInts(arr, 7))
fmt.Println(sort.SearchInts(arr, 11))
}
math库
func main() {
fmt.Println(math.MaxInt32, math.MinInt32)
fmt.Println(math.MaxInt64, math.MinInt64)
fmt.Println(math.MaxInt, math.MinInt)
fmt.Println(math.Max(1, 2), math.Min(5, 6))
}
strings库
字符串匹配查找
func main() {
str1 := "hello, world"
fmt.Println(strings.Contains(str1, "hello"))
}
字符串大小写转换
func main(){
str1 := "hello"
res1 := strings.ToLower(str1)
res2 := strings.ToUpper(str1)
res3 := strings.ToTitle(str1)
}
字符串比较
func main() {
str1 := "hello"
str2 := "Hello"
fmt.Println(str1 == "hello")
fmt.Println(strings.Compare(str1, str2))
fmt.Println(strings.EqualFold(str1, str2))
}
类型转换
byte-int
- string类型索引到某个下标的值是uint8类型(byte,也可以理解为ascii码值)
- 直接套上int(),byte()即可,只需要加减0字符
func main() {
s1 := "54321"
index1 := s1[0]
str1 := string(s1[0])
num1 := int(s1[0] - '0')
byte1 := byte(num1 + '0')
fmt.Printf("%T, %d\n", index1, index1)
fmt.Printf("%s, %d, %c, %v\n", str1, num1, byte1, index1 == byte1)
}
string转int
val, err := strconv.Atoi(s)
string转byte切片
func main() {
str1 := "hello"
arr1 := []byte(str1)
for _, v := range arr1 {
fmt.Printf("%c, %d\n", v, v)
}
}
string转byte数组
func main() {
str1 := "hello"
var byte1 [64]byte
copy(byte1[:], str1)
fmt.Printf("%v", byte1)
}