GO语言核心30讲 基础知识

原站地址:Go语言核心36讲_Golang_Go语言-极客时间

1. 两种声明变量方式的差异:

    短变量声明 name := "abc" 只能在函数体内部使用。

    var name = "abc" 这方式才可以用在所有地方。

2. 类型推断有什么好处? 代码重构时更方便,只要修改一处定义数据类型的代码,其他位置的数据类型都会自动推断。

3. 变量的重声明是什么?有什么好处? 

var err error
n, err := io.WriteString(os.Stdout, "Hello, everyone!\n")

 err 被声明了两次,这就是重声明。好处是可以重复使用同一个变量名,拷贝代码方便。

4. 重声明 有什么限制条件?

(1) 再次声明时的数据类型不能改变。

(2) 需要使用短变量声明。

(3) 声明并赋值的变量必须有多个,并且至少要有一个是新的变量

5. 具有嵌套关系的不同代码块间,存在重名的变量

(1) 可以编译通过,内层代码块中,会使用内层的变量,屏蔽掉外层的。

(2) 内层和外层的变量是两个独立的变量,所以可以数据类型不同。它们只是名字相同。

(3) 代码运行是,查找变量的顺序是,从内部往外部。

var block = "package"
func main() { 
    block := "function" 
    { 
        block := "inner" 
    } 
}

6. 类型转换: value := []string(变量x)。需要主义的几点:

(1) 整数值、常量之间的类型转换,只要源值在目标类型的可表示范围内就是合法的。

(2) 把整数值转换为string类型是可行的,被转换的整数值需要是有效的 Unicode 代码点,否则转换的结果将会是"�"乱码

(3) string类型向[]byte类型转换,代表着以 UTF-8 编码的字符串会被拆分成字节。

7. 如何正确判断变量的类型?

  使用“类型断言”表达式:

value, ok := interface{}(container).([]string)

(1) 先把变量 container 转换成空接口 interface{}(container )

(2) 再进行类型断言 .([]string)

(3) 判断返回的两个值 value , ok

   如果类型配的话,ok的值是true,转换后的结果赋值给value,成为字符串切片 

   如果类型不匹配的话,ok的值是false。 

   如果只声明value, 没有声明ok,并且当类型不匹配的话,会触发panic

8. 声明别名类型的两种方式: 

(1) type MyString = string, 两者完全相等

(2) type MyString2 string (没有等号),两者不同,是两个类型。

     MyString2 和 string 可以进行类型转换,但 []MyString2与[]string 就不能进行类型转换。

9. byte是uint8的别名类型,而rune是int32的别名类型

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值