golang学习之路之基础

一、变量与常量

// 1. 全局变量声明
var aa = 100
// 2. 局部变量声明可以使用短声明
func one(){
    var a = 100
    // or
    aa := 100   
}
// 3. 常量定义
func main(){
    // 常量(只读属性)
    const length int = 10
    // length = 100  // 常量是不允许被修改的
    fmt.Println("length = ", length)
}

二、类型转化

// 1. 整形转字符串
fmt.Println(strconv.Itoa(100))

//2 . 字符串转整形
i, _ := strconv.Atoi("100")
fmt.Println(i)

三、数组与切片

// 1. 定义数组的两种方式
var arr1 = [...]int{1,2,3}
arr2 := [...]int{2,2,2,2}
// 2. 定义切片的方式, 切片是引用类型

var num1 []int // 2.1
var num2 = []int{} // 2.2
arr := [...]int{1, 2, 3}
s := arr[:] // 此时s也是切片  // 2.3

// 3. 给切片增加元素
num2 = append(num2, 1, 2, 3)
num2 = append(num2, 4, 5, 6)
s = append(s, []string{"one", "two"}...)  // ... 解引用,使用单个值的方式插入数据, 被解引用的是一个切片

四、字典

// 字典是引用类型, 多个字典变量指向同一个内存地址
// 1. 定义一个字典
info := map[string]string{
    "one": "1",
    "two": "2",
    "thr": "3",
}
scores := map[string]int{"eng": 12}

// 2. 字典新增元素
info["four"] = "4"

// 3. 删除字典
delete(info, "four")

// 4. 查询
fmt.Println(info["one"])

// 5. 遍历字典
for k, v := range info {
    fmt.Println(k, v)
}

// 6. 字典长度
fmt.Println(len(info))

五、接收输入变量

var name string
fmt.Print("请输入姓名:")
fmt.Scanln(&name)
fmt.Println(name)

六、指针&指针变量

// 1. 创建一个指针,同时开辟内存空间
var ptr = new(int)
*ptr = 10
fmt.Println(*ptr)

// 2. 声明一个指针变量,不开辟内存空间
var two_ptr *string  // two_ptr := *string
a := "一个数据,用来给指针变量初始化"
two_ptr = &a
fmt.Println(*two_ptr)


// 3. 变量直接指向内存地址
b := "这是一个字符串,开辟出了一个内存地址"
three_ptr := &b
fmt.Println(*three_ptr)

// 4. 通过指针修改变量内容
func changValue(value *int) {
	// 需要传内存地址
	*value = 20
}
changValue(&a)

// 5. 通过切片修改内容
func changeArr(value []int) {
    // 此时需要传递一个切片
	value[0] = 300
}


七、结构体

// 1. 定义结构体
type Person struct {
    name string
    age  int
}

// 2. 使用
person := Person{name: "xiaomnig", age: 18}
person1 := Person{"huahua", 18}
person1.name = "xx"

// 3. 匿名结构体
person := struct {
		age int
	}{18}

// 4. 嵌套结构体
	type Author struct {
		name string
		sex  bool
	}
	type Lesson struct {
		name   string
		author Author
	}

	lesson1 := Lesson{name: "xiaomi"}
	lesson1.author = Author{name: "xxx", sex: true}
	lesson2 := Lesson{name: "aaa", author: Author{name: "ww", sex: false}}
	fmt.Println(lesson1.author.name)
// 5. 嵌套结构体 提升字段
	type Author struct {
		authorName string
		age        int
	}

	type Lesson struct {
		name string
		// 提升字段, 直接放上一个结构体的信息
		Author
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值