zoukankan      html  css  js  c++  java
  • GO编程(打卡)-Task05: 字典、字符串

    字典

    package main
    
    import "fmt"
    
    func main() {
    	// 定义字典方式一
    	var m1 map[string]int
    	// 定义字典方式二
    	// interface{}表示value值可以是任意类型,但使用时需类型断言来判断类型
    	m2 := make(map[int]interface{}, 100)
    	// 定义字典方式三
    	m3 := map[string]string{
    		"name": "james",
    		"age":  "35",
    	}
    	// 初始化字典变量
    	m1 = map[string]int{
    		"key1": 8,
    	}
    	// 添加key-value
    	m2[1] = 1
    	m2[2] = "2"
    	m3["key3"] = "value3"
    	fmt.Println(len(m1), len(m2), len(m3))
    	// 判断键值是否存在
    	if _, ok := m3["name"]; ok {
    		fmt.Println("字典m3存在key name")
    	}
    	// 遍历字典 默认无序
    	for key, value := range m3 {
    		fmt.Println("m3['", key, "']=", value)
    	}
    	// 删除键值
    	delete(m3, "key3")
    	// 函数作为值类型传入
    	m4 := make(map[string]func(a, b int) int)
    	m4["add"] = func(a, b int) int {
    		return a + b
    	}
    	m4["multi"] = func(a, b int) int {
    		return a * b
    	}
    	fmt.Println("m4['add']=", m4["add"](3, 2))
    	fmt.Println("m4['multi']=", m4["multi"](3, 2))
    }
    

    字符串

    • 字符串定义 值不可变
    package main
    
    import (
    	"bytes"
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 定义字符串 一个中文占用三个字节
    	s := "string字符串"
    	fmt.Println("变量s的长度len(s)=", len(s))
    
    	// 切片
    	b := []byte(s)
    	for i := 0; i < len(b); i++ {
    		// 格式化输出
    		fmt.Printf("%c", b[i])
    	}
    	fmt.Println()
    	// 包含中文的切片
    	r := []rune(s)
    	for i := 0; i < len(r); i++ {
    		fmt.Printf("%c", r[i])
    	}
    	fmt.Println()
    	// strings包提供了许多操作字符串的函数
    	// strconv包实现了基本数据类型与字符串之间的转换
    
    	// 拼接
    	count := 5
    	// SPrintf
    	s = ""
    	for i := 1; i < count; i++ {
    		s = fmt.Sprintf("%v%v", s, i)
    	}
    	fmt.Println("字符串拼接SPrintf", s)
    	// +
    	s = ""
    	for i := 1; i < count; i++ {
    		s += strconv.Itoa(i)
    	}
    	fmt.Println("字符串拼接+", s)
    	// bytes.Buffer
    	var buf bytes.Buffer
    	for i := 1; i < count; i++ {
    		buf.WriteString(strconv.Itoa(i))
    	}
    	s = buf.String()
    	fmt.Println("字符串拼接bytes.Buffer", s)
    	// strings.Builder
    	var builder strings.Builder
    	for i := 1; i < count; i++ {
    		builder.WriteString(strconv.Itoa(i))
    	}
    	s = builder.String()
    	fmt.Println("字符串拼接strings.Builder", s)
    }
    

    参考

    https://github.com/datawhalechina/go-talent/blob/master/4.字典、字符串.md

  • 相关阅读:
    指针和数组的关系
    深入学习数组
    const关键字与指针
    野指针是什么
    指针带来的一些符号的理解
    指针的本质
    内存管理之堆
    内存管理之栈
    元类
    断点调式和面向对象进阶
  • 原文地址:https://www.cnblogs.com/rn-05181226-rw/p/14141804.html
Copyright © 2011-2022 走看看