Golang Go语言:进来看几个 Golang Go 的 syntax 代码段吧

发布于 1周前 作者 yuanlaile 来自 Go语言

Golang Go语言:进来看几个 Golang Go 的 syntax 代码段吧

  1. 感觉是 go 的一个 bug 啊,网上解释说是因为 switch 之后的打括号放在下一行,所以 go 编译器默认在 switch f()之后加了一个分号。下面的 case 用的是系统默认的 switch 值 true 所以输出 true。但是如果不写 switch 那一行,编译器就直接报错了,说明 switch 和下面的 case 是分不开的啊。
  2. 对于类型 *[]int 和 *[3]int,可以对后者 range 操作,但是前者报编译器错误
  3. 对于第三个就不理解了,请哪位大佬出来解释下。

测试代码: https://play.golang.org/p/7D3nEYF3UFX

	// #1
	f := func() bool { return false }
	switch f()
	{
		case true:
			println("true")
		case false:
			println("false")
	}
// #2
arr := [3]int{1,2,3}
arrPtrOfLen := &arr
for i := range arrPtrOfLen { println(i) }

arr2 := []int{1,2,3}
arrPtrOfVar := &arr2
for j := range arrPtrOfVar { println(j) } 
//// arrPtrOfVar compile error: cannot range over data (type *[]int)

// #3
for k := range (*[3]int) (nil) {
	println(k)
}


更多关于Golang Go语言:进来看几个 Golang Go 的 syntax 代码段吧的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

这些标准里都写的清清楚楚吧
1.
> A missing switch expression is equivalent to the boolean value true.
https://golang.org/ref/spec#Switch_statements

2.
> The expression on the right in the “range” clause is called the range expression, which may be an array, pointer to an array, slice, string, map, or channel permitting receive operations.
https://golang.org/ref/spec#RangeClause

3. 就在 RangeClause 的例子里

更多关于Golang Go语言:进来看几个 Golang Go 的 syntax 代码段吧的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


感谢两位解答,谢谢~

当然,我很乐意帮你分析和讨论一些关于Go语言的语法代码段。以下是对几个常见Go语言语法代码段的简要解释:

  1. 变量声明与赋值

    var a int = 10
    b := 20  // 短变量声明,仅在函数内部有效
    

    Go语言使用var关键字声明变量,并可以使用:=进行短变量声明和赋值。

  2. 条件语句

    if a > b {
        fmt.Println("a is greater than b")
    } else if a < b {
        fmt.Println("a is less than b")
    } else {
        fmt.Println("a is equal to b")
    }
    

    Go语言的条件语句与C、Java等语言类似,使用ifelse ifelse

  3. 循环语句

    for i := 0; i < 10; i++ {
        fmt.Println(i)
    }
    

    Go语言的for循环类似于C语言的for循环,支持初始化语句、条件表达式和后处理语句。

  4. 函数声明

    func add(a int, b int) int {
        return a + b
    }
    

    Go语言的函数声明包括func关键字、函数名、参数列表和返回类型。

  5. 并发

    go func() {
        fmt.Println("Hello from goroutine")
    }()
    

    Go语言原生支持并发,通过go关键字可以轻松启动一个新的goroutine。

这些代码段展示了Go语言的基本语法和特性。如果你有更具体的代码段或问题,欢迎继续提问!

回到顶部