海南省住建设厅网站报监,做传媒网站公司,wordpress免费英文主题,外呼系统电销文章目录 1.下面的代码有什么问题#xff1f;2.下面代码最后一行输出什么#xff1f;请说明原因3.下面代码有什么问题#xff1f;4.下面的代码输出什么#xff1f; 1.下面的代码有什么问题#xff1f;
func main() {data : []int{1,2,3}i : 0ifmt.Println(data[i])
}参考… 文章目录 1.下面的代码有什么问题2.下面代码最后一行输出什么请说明原因3.下面代码有什么问题4.下面的代码输出什么 1.下面的代码有什么问题
func main() {data : []int{1,2,3}i : 0ifmt.Println(data[i])
}参考答案及解析对于自增、自减需要注意
自增、自减不在是运算符只能作为独立语句而不是表达式
不像其他语言Go 语言中不支持 i 和 --i 操作
表达式通常是求值代码可作为右值或参数使用。而语句表示完成一个任务比如 if、for 语句等。表达式可作为语句使用但语句不能当做表达式。
修复代码
func main() { data : []int{1,2,3}i : 0ifmt.Println(data[i])
}2.下面代码最后一行输出什么请说明原因 func main() {x : 1fmt.Println(x){fmt.Println(x)i,x : 2,2fmt.Println(i,x)}fmt.Println(x) // print ?
}参考答案及解析输出1。知识点变量隐藏。使用变量简短声明符号 : 时如果符号左边有多个变量只需要保证至少有一个变量是新声明的并对已定义的变量尽进行赋值操作。但如果出现作用域之后就会导致变量隐藏的问题就像这个例子一样。
3.下面代码有什么问题
type foo struct {bar int
}func main() {var f foof.bar, tmp : 1, 2
}参考答案及解析编译错误
non-name f.bar on left side of :: 操作符不能用于结构体字段赋值。
4.下面的代码输出什么
func main() { fmt.Println(~2)
}参考答案及解析编译错误。
invalid character U007E ~很多语言都是采用 ~ 作为按位取反运算符Go 里面采用的是 ^ 。按位取反之后返回一个每个 bit 位都取反的数对于有符号的整数来说是按照补码进行取反操作的快速计算方法对数 a 取反结果为 -(a1) 对于无符号整数来说就是按位取反。例如
func main() {var a int8 3var b uint8 3var c int8 -3fmt.Printf(^%b%b %d\n, a, ^a, ^a) // ^11-100 -4fmt.Printf(^%b%b %d\n, b, ^b, ^b) // ^1111111100 252fmt.Printf(^%b%b %d\n, c, ^c, ^c) // ^-1110 2
}另外需要注意的是如果作为二元运算符^ 表示按位异或即对应位相同为 0相异为 1。例如
func main() {var a int8 3var c int8 5fmt.Printf(a: %08b\n,a)fmt.Printf(c: %08b\n,c)fmt.Printf(a^c: %08b\n,a ^ c)
}给大家重点介绍下这个操作符 ^按位置零例如z x ^ y表示如果 y 中的 bit 位为 1则 z 对应 bit 位为 0否则 z 对应 bit 位等于 x 中相应的 bit 位的值。
不知道大家发现没有我们还可以这样理解或操作符| 表达式 z x | y如果 y 中的 bit 位为 1则 z 对应 bit 位为 1否则 z 对应 bit 位等于 x 中相应的 bit 位的值与 ^ 完全相反。
var x uint8 214
var y uint8 92
fmt.Printf(x: %08b\n,x)
fmt.Printf(y: %08b\n,y)
fmt.Printf(x | y: %08b\n,x | y)
fmt.Printf(x ^ y: %08b\n,x ^ y)输出
x: 11010110
y: 01011100
x | y: 11011110
x ^ y: 10000010