Go语言入门心法(一): 基础语法

news2025/2/28 20:09:29


Go语言入门心法(一)

Go语言入门心法(二): 结构体

Go语言入门心法(三): 接口





一: go语言中变量认知 


go语言中变量的定义:  (要想飞|先会走)||(翻身仗|抹遗憾 )   |(二八定律)
                    (先量变)|(再质变)||(冰冻三尺非一日寒)|(扶贫之旅|继续裸奔)
         (1)go语言中变量认知升维
         (2)go语言中变量与强类型语言java类似,变量使用必须先声明后使用
         (3)go语言中变量标准的声明使用var关键字进行声明: var 变量名 变量类型;变量声明后必须使用,否则编译器会报错
         (4)go语言中变量声明时可以赋予初始值,如果不赋初始值,则默认为各变量的类型的默认值 var name string = "外卖小哥哥"
         (5)go语言中变量如果声明的同时赋予初始值,则可以省略变量的类型: var age = 30
          (6)go语言中变量什么并附初始值时可以使用简易默认,也是go语言中变量定义的常用方式: name := "boss";此时可以省略var关键字与数据类型
          (7)go语言可以对多个变量同时进行块声明:
               var (
                   personName := "张三"
                   personAge  := 30
                   sex := 1
                   marry := false )

附录实例一:


package main

import (
	"fmt"
	"reflect"
)

/*
go语言中变量的定义域:

			(1)go语言中变量认知升维
			(2)go语言中变量与强类型语言java类似,变量使用必须先声明后使用
			(3)go语言中变量标准的声明使用var关键字进行声明: var 变量名 变量类型;变量声明后必须使用,否则编译器会报错
			(4)go语言中变量声明时可以赋予初始值,如果不赋初始值,则默认为各变量的类型的默认值 var name string = "外卖小哥哥"
			(5)go语言中变量如果声明的同时赋予初始值,则可以省略变量的类型: var age = 30
		    (6)go语言中变量什么并附初始值时可以使用简易默认,也是go语言中变量定义的常用方式: name := "boss";此时可以省略var关键字与数据类型
		    (7)go语言可以对多个变量同时进行块声明:
	            var (
	                personName := "张三"
	                personAge  := 30
	                sex := 1
	                marry := false
	            )
*/
func main() {
	a := 1
	b := "test"
	c := true

	fmt.Println("a变量类型: ", reflect.TypeOf(a))
	fmt.Println("b变量类型: ", reflect.TypeOf(b))
	fmt.Println("c变量类型: ", reflect.TypeOf(c))

	fmt.Println("=========================变量类型转换===============================")
	var d int16 = 97
	fmt.Println("变量a的值为: ", d, " ,变量的类型为: ", reflect.TypeOf(d))
	e := int32(d)
	fmt.Println("变量e的值为: ", e, " ,变量的类型为: ", reflect.TypeOf(e))
	fmt.Println("变量e的类型为字符串: ", string(e))
	fmt.Println("变量e的类型为字符串string : ", reflect.TypeOf(string(e)))

	desc := `再进行变量类型转换中
             需要特别注意转换后的数值是否发生变化
             `
	fmt.Println("注意事项: ", desc)
	var as int32 = 1234567891
	fmt.Println("变量as的值:", as, " ,变量类型: ", reflect.TypeOf(as))
	fmt.Println("转换as的类型为int16,变量as的值为: ", int16(as), " ,变量as类型: ", reflect.TypeOf(int16(as)))
}



实例运行效果:


GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_VariableParameterDifinition_go.exe D:\program_file\go_workspace\org.jd.data\VariableParameterDifinition.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_VariableParameterDifinition_go.exe
a变量类型:  int
b变量类型:  string
c变量类型:  bool
=========================变量类型转换===============================
变量a的值为:  97  ,变量的类型为:  int16
变量e的值为:  97  ,变量的类型为:  int32
变量e的类型为字符串:  a
变量e的类型为字符串string :  string
注意事项:  再进行变量类型转换中
             需要特别注意转换后的数值是否发生变化

变量as的值: 1234567891  ,变量类型:  int32
转换as的类型为int16,变量as的值为:  723  ,变量as类型:  int16

Process finished with the exit code 0
 


附录实例二:


package main

import (
	"fmt"
	"reflect"
)

/*
变量交换值,使用变量简短什么方式来声明及赋值
*/
func main() {
	var name string
	var age int
	var salary float32
	fmt.Println("变量a与b交换值:")
	a := 1
	b := 3
	a, b = b, a
	fmt.Println("a:", a)
	fmt.Println("b:", b)

	println("name变量的默认初始值: ", name)
	println("age变量的初始值: ", age)
	println("salary的默认初始值: ", salary)

	/*
	  go语言中变量的定义与java中定义的变量类型,都需要先声明后使用的
	  (1)申明变量的语法:
	  var 变量名  类型
	  这样声明的变量,没有赋予初始值时,go会自动赋予该类型变量的默认初始值字符串默认初始值为空串
	  (2)定义变量的同时赋予初始值: 标准的声明变量赋值
	  var typeNum int = 0
	  (3)同时声明多个变量时,没有赋予初始值,则变量类型必须保留
	   var (
	      a string
	      b int
	      c string
	      d float
	   )
	   (4) 编译器推导类型格式
	   var num  = 20
	*/
	var college string
	println("变量college= ", college)
	var typeNum int64
	println("变量type= ", typeNum)
	/*
	  (1)go语言可以批量声明变量,声明变量的同时可以赋予初始值
	  (2)go语言中变量声明后必须使用,但是常量声明后,不一定使用
	*/
	var (
		// 赋值的变量,可以省略类型,go编译器会自动进行类型推断;为简介,通常附初始值的变量可以省略变量类型
		tName string = "张三"
		tAge  int    = 28
		tSex  bool
	)

	var numCount = 20
	println("numCount type is ", reflect.TypeOf(numCount))
	println("numCount = ", numCount)

	str := "这是第一个go语言程序"
	println("str=", str)
	strNum := `
             通过反引号可以定义字符串
             多行字符串定义
          `
	println("多行字符串定义: strNum = ", strNum)
	desc := `
            (1) 在go语言中有两种类型
             uint8:代表了 ASCII码的一个字符串
             rune类型: 代表了UTF-8格式的一个字符(如中文,日文或者其他复合字符,本质就是int32类型)
          `
	println(desc)

	english := 'a'
	chinese := '我'

	fmt.Println(english)
	fmt.Println(chinese)

	println("名称: ", tName, " ,年龄: ", tAge, " ,性别(true-男;false-女): ", tSex)

}


运行效果:


OOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ChangeParamaValue_go.exe D:\program_file\go_workspace\org.jd.data\ChangeParamaValue.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ChangeParamaValue_go.exe
变量a与b交换值:
a: 3
b: 1
name变量的默认初始值:
age变量的初始值:  0
salary的默认初始值:  +0.000000e+000
变量college=
变量type=  0
numCount type is  (0xed14a0,0xe9c920)
numCount =  20
str= 这是第一个go语言程序
多行字符串定义: strNum =
             通过反引号可以定义字符串
             多行字符串定义


            (1) 在go语言中有两种类型
             uint8:代表了 ASCII码的一个字符串
             rune类型: 代表了UTF-8格式的一个字符(如中文,日文或者其他复合字符,本
质就是int32类型)

97
25105
名称:  张三  ,年龄:  28  ,性别(true-男;false-女):  false

Process finished with the exit code 0
 


二: go语言常量认知


go语言中的常量的定义:
    (1)使用关键字const定义常量;
    (2)常量申明后可以不使用;不想变量那样,定义后必须使用,否则编译检查报错
    (3)常量的值在初始化后,不能修改
    (4)常量枚举: 针对一个有穷序列集合而言,一个集的枚举就是列出有穷序列集的所有成员

package main

import (
	"fmt"
)

/*
   go语言中的常量的定义:
       (1)使用关键字const定义常量;
       (2)常量申明后可以不使用;不想变量那样,定义后必须使用,否则编译检查报错
       (3)常量的值在初始化后,不能修改
       (4)常量枚举: 针对一个有穷序列集合而言,一个集的枚举就是列出有穷序列集的所有成员
*/

func main() {
	fmt.Println("---------------循序渐进代码实操演示学习go编程语言--------------")
	fmt.Println("-------------------------go语言中定义常量------------------------------")
	const PersonName string = "GO语言实战系列"
	println("第一个常量: ", PersonName)
	const aa = 20
	const bb int16 = 50
	println("常量定义时,可以使用编译器进行类型推断,从而可以省略变量的类型")
	println("常量[a] = ", aa)
	println("常量[b]= ", bb)

	println("常量与变量都可以批量定义:")
	const (
		personName    string = "小张"
		personAge     int16  = 30
		personAddress        = "北京市海淀区马连洼街道120路105号"
	)

	println("使用批量定义的常量:")
	println("名称: ", personName, " ,年龄: ", personAge, " ,上班等死地址: ", personAddress)

	/*
	  go语言现阶段还没有枚举,但是可以通过使用一种特殊的常量“iota”类模拟枚举
	  iota在const关键字出现时被重置为0,const中的每新增一行常量申明,将使iota进行一次计数,
	  可以简单第将iota理解为const语句块中的行索引
	*/
	const (
		a = iota
		b
		c = "你好呀,欢迎来到特工世界"
		d
		e = iota
	)
	println("a:", a)
	println("b:", b)
	println("c:", c)
	println("d:", d)
	println("e:", e)

}

实例运行效果:


GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ConstParameterDefinition_go.exe D:\program_file\go_workspace\org.jd.data\ConstParameterDefinition.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ConstParameterDefinition_go.exe
---------------循序渐进代码实操演示学习go编程语言--------------
-------------------------go语言中定义常量------------------------------
第一个常量:  GO语言实战系列
常量定义时,可以使用编译器进行类型推断,从而可以省略变量的类型
常量[a] =  20
常量[b]=  50
常量与变量都可以批量定义:
使用批量定义的常量:
名称:  小张  ,年龄:  30  ,上班等死地址:  北京市海淀区马连洼街道120路105号
a: 0
b: 1
c: 你好呀,欢迎来到特工世界
d: 你好呀,欢迎来到特工世界
e: 4

Process finished with the exit code 0


三: go中各种运算符认知


package main

import "fmt"

func main() {
	/*
	  go语言中的各种表达式:
	      (1)赋值表达式 = , +=,-+
	      (2)条件表达式  if 条件判断
	      (3)逻辑表达式  && || !
	      (4)算术表达式  + , - , * ,/
	      (5)位运算符
	*/

	fmt.Println("go语言中的各种表达式")

	a := 1
	b := 2
	println("算术运算符: ")
	println("a+b = ", a+b)
	println("a-b = ", a-b)
	println("a*b = ", a*b)
	println("求商(a/b) = ", a/b)
	println("求余数(a%b) = ", a%b)
	println()
	println("比较运算符:")
	println("a==b:", a == b)
	println("a>=b:", a >= b)
	println("a<=b:", a <= b)
	println("a<b:", a < b)
	println("a>b:", a > b)
	println("a!=b:", a != b)

	println()
	println("赋值运算符: ")
	var d = 10
	fmt.Println("变量d = ", d)
	d += 2
	fmt.Println("d+=2: ", d)
	d -= 2
	fmt.Println("d-=2: ", d)
	d *= 2
	fmt.Println("d*=2: ", d)
	d /= 2
	fmt.Println("d/=2: ", d)
	d %= 2
	fmt.Println("d%=2: ", d)

	println()
	println("位运算符: ")
	c := 9
	e := 13
	fmt.Println("e&c = ", e&c)
	fmt.Println("e|c = ", e|c)
	fmt.Println("e^c = ", e^c)
	fmt.Println("e<<c = ", e<<c)
	fmt.Println("e>>c = ", e>>c)
	println()
	println("逻辑运算符: ")

	f := true
	g := false
	fmt.Println("f&g  = ", f && g)
	fmt.Println("f||g  = ", f || g)
	fmt.Println("!f = ", !f)

}

运行效果:


GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ExpressionToGoGrammar_go.exe D:\program_file\go_workspace\org.jd.data\ExpressionToGoGrammar.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ExpressionToGoGrammar_go.exe
go语言中的各种表达式
算术运算符:
a+b =  3
a-b =  -1
a*b =  2
求商(a/b) =  0
求余数(a%b) =  1

比较运算符:
a==b: false
a>=b: false
a<=b: true
a<b: true
a>b: false
a!=b: true

赋值运算符:
变量d =  10
d+=2:  12
d-=2:  10
d*=2:  20
d/=2:  10
d%=2:  0
位运算符:
e&c =  9
e|c =  13
e^c =  4
e<<c =  6656
e>>c =  0

逻辑运算符:
f&g  =  false
f||g  =  true
!f =  false

Process finished with the exit code 0


四: 流程控制认知

package main

import (
	"fmt"
	"runtime"
)

/*
go语言流程控制:

	go语言中,通过if 关键字构成的条件判断语句进行条件判断,格式如下:
	 if 条件表达式 {
	    分支一
	 }else if 条件表达式2 {
	    分支二
	 }else {
	    分支3
	 }
*/
func main() {

	fmt.Println(`Go语言的编程者需要通过流程控制语句来控制程序的逻辑走向和执行顺序.
                     流程控制语句主要包括: 条件判断语句(if和switch),
                     循环控制语句(for,break,continue和跳转语句goto)
              `)
	a := 101
	if a > 100 {
		fmt.Println(a, " > 100")
	} else if a == 100 {
		fmt.Println(a, " = 100")
	} else {
		fmt.Println(a, " < 100")
	}

	println(`
              if还有一种比较常见的写法,就是在if表达式前添加一个语句,使用变量接收语句返回的值,通过对该变量的判断在
               选择执行的分支;这一点更python的  if条件判断类似,而java需要另外一个变量来接收
           `)
	if num := runtime.NumCPU(); num >= 1 {
		println("程序使用的CPU核数为:", num)
	}

	println()
	println(`
        Go语言中的循环逻辑通过for关键字实现;不同于其他编程语言,Go语言没有while关键字,不存在while循环
        for循环格式如下:
           for 初始语句;条件表达式;赋值表达式 {
               循环体
           }
      `)
	println()
	for i := 1; i < 10; i++ {
		fmt.Println("循环的次数:", i)
	}

	println(`
        break跳出循环:
           break语言用来跳出for循环,而且可以在语句后面添加标签;表示退出标签对应的代码块逻辑;
           注意: break语句如果不带标签,则默认跳出最内层的for循环
   `)

	i := 1
	for {
		for {
			if i > 5 {
				println("跳出内层for循环")
				break
			}
			fmt.Println("循环次数: ", i)
			i++
		}
		fmt.Println("跳出外层for循环")
		break
	}

	println()
	fmt.Println(`
        使用带标签的break语句,直接跳出最外层的for循环:
    `)
	t := 1
OuterLoop:
	for {
		for {
			if t > 5 {
				println("break标签跳出最内层循环.....")
				break OuterLoop // 跳出OuterLoop标签对应的循环体
			}
			fmt.Println("循环次数: ", t)
			t++
		}
	}
	println()
	println(`
       continue继续循环:
           continue可以立即结束当前循环体中的逻辑,开始下一次循环;
           与break语句类似,continue语句之后也可跟标签,表示循环开始标签所对应的循环
    `)
OuterLoopContinue:
	for i := 0; i < 5; i++ {
		for j := 0; j < 6; j++ {
			if j == 1 {
				fmt.Println(i, j)
				continue OuterLoopContinue
			}
		}
	}
}

运行效果:


GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ControlFlowToGrammar_go.exe D:\program_file\go_workspace\org.jd.data\ControlFlowToGrammar.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ControlFlowToGrammar_go.exe
Go语言的编程者需要通过流程控制语句来控制程序的逻辑走向和执行顺序.
                     流程控制语句主要包括: 条件判断语句(if和switch),
                     循环控制语句(for,break,continue和跳转语句goto)

101  > 100

              if还有一种比较常见的写法,就是在if表达式前添加一个语句,使用变量接收语句返回的值,通过对该变量的判断在
               选择执行的分支;这一点更python的  if条件判断类似,而java需要另外一
个变量来接收

程序使用的CPU核数为: 20

        Go语言中的循环逻辑通过for关键字实现;不同于其他编程语言,Go语言没有while关键字,不存在while循环
        for循环格式如下:
           for 初始语句;条件表达式;赋值表达式 {
               循环体
           }

循环的次数: 1
循环的次数: 2
循环的次数: 3
循环的次数: 4
循环的次数: 5
循环的次数: 6
循环的次数: 7
循环的次数: 8
循环的次数: 9

        break跳出循环:
           break语言用来跳出for循环,而且可以在语句后面添加标签;表示退出标签对应
                                                                              应的代码块逻辑;
           注意: break语句如果不带标签,则默认跳出最内层的for循环

循环次数:  1
循环次数:  2
循环次数:  3
循环次数:  4
循环次数:  5
跳出内层for循环
跳出外层for循环


        使用带标签的break语句,直接跳出最外层的for循环:

循环次数:  1
循环次数:  2
循环次数:  3
循环次数:  4
循环次数:  5
break标签跳出最内层循环.....


       continue继续循环:
           continue可以立即结束当前循环体中的逻辑,开始下一次循环;
           与break语句类似,continue语句之后也可跟标签,表示循环开始标签所对应的循
                                                                              循环

0 1
1 1
2 1
3 1
4 1

Process finished with the exit code 0


五: swith语句匹配认知

go语言中switch匹配模式认知升维:

      (1)switch语句可以根据不同的条件匹配,来执行不同的case分支;从而简化了if ....elseif.....else.....多层嵌套
       (2)switch语句默认,没有匹配到任何条件时,默认执行default分支;switch语句的执行过程从上到下,直到找到匹配项,匹配项后面也不需要在加break;
       (3)每一个switch语句只能包含一个可选的default分支;
        (4)switch语法如下:
              switch express {
                  case value1:
                        分支代码块1
                  case value2:
                        分支代码块2
                  default:
                         默认值执行代码块

              }
           (5)默认情况下,switch匹配成功后就不会继续匹配其后面的case,如果我们需要无条件强制执行后面的case,可以使用fallthrough关键字

package main

import "fmt"

func main() {
	println("===============================================================================")
	println(`

		go语言中switch匹配模式认知升维:

				(1)switch语句可以根据不同的条件匹配,来执行不同的case分支;从而简化了if ....elseif.....else.....多层嵌套
			    (2)switch语句默认,没有匹配到任何条件时,默认执行default分支;switch语句的执行过程从上到下,直到找到匹配项,匹配项后面也不需要在加break;
			    (3)每一个switch语句只能包含一个可选的default分支;
		        (4)switch语法如下:
		              switch express {
		                  case value1:
		                        分支代码块1
		                  case value2:
		                        分支代码块2
		                  default:
		                         默认值执行代码块

		              }
	            (5)默认情况下,switch匹配成功后就不会继续匹配其后面的case,如果我们需要无条件强制执行后面的case,可以使用fallthrough关键字
	`)
	println("===============================================================================")
	println()
	switch 1 + 1 {
	case 1:
		fmt.Println("匹配到该条件:", "1+1=1")
	case 2:
		fmt.Println("匹配到该条件:", "1+1=2")
		fallthrough
	case 3:
		fmt.Println("匹配到该条件:", "1+1=3")
		fallthrough
	case 4:
		fmt.Println("匹配到该条件:", "1+1=4")
	default:
		fmt.Println("匹配到该条件:", "1+1不等于1或者2,3,4")

	}

	println("=========================演示使用fallthrough关键字,无条件执行后面的case语句===========================")
	println("省略了switch关键字后面的表达式时,默认为布尔值true")
	println()
	switch { // 省略了表达式,只能匹配false与true,default者三种情况
	// false肯定不会执行
	case false:
		fmt.Println("case 1为false")
		// true肯定会执行
	case true:
		fmt.Println("case 2为false")
		fallthrough
		// 由于fallthrough关键字,索引default一定会被执行
	default:
		fmt.Println("默认执行case语句代码块.......")

	}

}

 运行效果:


gram_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ControlFlowToSwitchGrammar_go.exe D:\program_file\go_workspace\org.jd.data\ControlFlowToSwitchGrammar.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ControlFlowToSwitchGrammar_go.exe
===============================================================================


                go语言中switch匹配模式认知升维:

                                (1)switch语句可以根据不同的条件匹配,来执行不同的case分支;从而简化了if ....elseif.....else.....多层嵌套

                            (2)switch语句默认,没有匹配到任何条件时,默认执行default分支;switch语句的执行过程从上到下,直到找到匹配项,匹配项后面也不需要在加break;

                            (3)每一个switch语句只能包含一个可选的default分支;
                        (4)switch语法如下:
                              switch express {
                                  case value1:
                                        分支代码块1
                                  case value2:
                                        分支代码块2
                                  default:
                                         默认值执行代码块

                              }
                    (5)默认情况下,switch匹配成功后就不会继续匹配其后面的case,如
果我们需要无条件强制执行后面的case,可以使用fallthrough关键字

===============================================================================

匹配到该条件: 1+1=2
匹配到该条件: 1+1=3
匹配到该条件: 1+1=4
=========================演示使用fallthrough关键字,无条件执行后面的case语句=====
                                                                               =======================
省略了switch关键字后面的表达式时,默认为布尔值true

case 2为false
默认执行case语句代码块.......

Process finished with the exit code 0
 

六: goto跳转认知

goto语言用于代码间的无条件跳转,格式如下:
  goto 标签
一般情况下,在程序中不建议使用goto语句,过多的goto语句会破坏程序结构,使程序可读性变差..............

package main

import (
	"fmt"
)

func main() {
	println(`

        goto语言用于代码间的无条件跳转,格式如下:
          goto 标签
        一般情况下,在程序中不建议使用goto语句,过多的goto语句会破坏程序结构,使程序可读性变差..............
    `)

	fmt.Println("=========================goto 标签 无条件跳转===========================")
	goto sign
	fmt.Println("无效代码,不会被执行....")
sign:
	fmt.Println("跳过sign标签之间的代码,弯道超车 .................")

	goto start
	println("goto start标签会执行吗")
start:
	println("=================跳过了start标签了吗=======================")
}

  运行效果:


GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ControlFlowToGotoGrammar_go.exe D:\program_file\go_workspace\org.jd.data\ControlFlowToGotoGrammar.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_ControlFlowToGotoGrammar_go.exe


        goto语言用于代码间的无条件跳转,格式如下:
          goto 标签
        一般情况下,在程序中不建议使用goto语句,过多的goto语句会破坏程序结构,使程
序可读性变差..............

=========================goto 标签 无条件跳转===========================
跳过sign标签之间的代码,弯道超车 .................
=================跳过了start标签了吗=======================

Process finished with the exit code 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3实现刻度尺

期望实现效果如下&#xff1a; 一、基本使用 安装slide-ruler&#xff0c;根据文档实现内容 https://github.com/wusb/slide-ruler/blob/master/README-zh_CN.md 二、进一步处理 1、直接复制slide-ruler核心文件&#xff0c;在此基础上进一步处理 处理1&#xff1a;刻度朝向…

思维模型 秩序

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。秩序是事物正常运行的基石。有序的安排是成功的先决条件。 1 秩序的应用 1.1 秩序在不同科学领域中的应用 物理学和天文学&#xff1a; 物理学家通过研究原子和分子的有序排列来理解物质的…

思维模型 正/反 木桶理论

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。 1 正/反 木桶理论的应用 1.1 木桶理论的应用 1.1.1 正木桶理论在考试中的应用 小明是一名理科高中生&#xff0c;他在学习过程中发现自己在数理化方面表现较好&#xff0c;但在语文和英…

基于Vue+webpack之H5打包资源优化

前言 基于公司的业务以及今年接触到的项目大部分都是APP混合开发&#xff0c;即原生Android/ios H 5页面开发APP。项目从产品需求的评审到方案的评审再到开发提测...这一套流程下来让我收货颇多。总想找个时间好好记录一番&#xff0c;大概还是自己懒惰了&#xff0c;一直拖到…

【Vue面试题二十二】、什么是虚拟DOM?如何实现一个虚拟DOM?说说你的思路

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;什么是虚拟DOM&#xff…

vim、gcc/g++、make/Makefile、yum、gdb

vim、gcc/g、make/Makefile、yum、gdb 一、Linux编辑器vim1、简介2、三种模式的概念&#xff08;1&#xff09;正常/普通/命令模式(Normal mode)&#xff08;2&#xff09;插入模式(Insert mode)&#xff08;3&#xff09;末行/底行模式(last line mode) 3、三种模式的切换4、正…

langchain 加载各种格式文件读取方法

参考&#xff1a;https://python.langchain.com/docs/modules/data_connection/document_loaders/ https://github.com/thomas-yanxin/LangChain-ChatGLM-Webui/blob/master/app.py 代码 可以支持pdf、md、doc、txt等格式 from langchain.document_loaders import Unstruct…

数据库管理-第109期 19c OCM考后感(20231015)

数据库管理-第109期 19c OCM考后感&#xff08;202301015&#xff09; 距离上一篇又过了两周多&#xff0c;为啥又卡了这么久&#xff0c;主要是后面几个问题&#xff1a;1. 9月1日的19c OCM upgrade考试木有过&#xff0c;因为有一次免费补考机会就又预约了10月8日的考试&…

IoT知识点补充

MySQL vs NoSQL数据库&#xff08;MongoDB&#xff09; 这里举的例子使用MySQL存储用户信息和博客文章的关系数据&#xff0c;同时使用MongoDB存储博客文章的评论&#xff0c;因为评论可以是不同结构的半结构化数据。 MySQL部分如下 import java.sql.Connection; import jav…

普冉PY32系列(九) GPIO模拟和硬件SPI方式驱动无线收发芯片XL2400

目录 普冉PY32系列(一) PY32F0系列32位Cortex M0 MCU简介普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单普冉PY32系列(四) PY32F002A/003/030的时钟设置普冉PY32系列(五) 使用JLink RTT代替串口输出日志普冉PY32…

初出茅庐的小李博客之SPI工作模式

SPI的工作模式 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种同步串行通信协议&#xff0c;常用于连接微控制器和外围设备。SPI有四种模式&#xff0c;分别是0、1、2、3模式。 0模式&#xff1a;时钟空闲时为低电平&#xff0c;数据在时钟的下降沿采样&#…

Using sunbeam to deploy openstack (by quqi99)

作者&#xff1a;张华 发表于&#xff1a;2023-10-15 版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99) What’s sunbeam sunbeam是一个部署openstack的工具&#xff0c;它会用ju…

利用ChatGPT练习口语

目录 ChatGPT 这两天发布了一个激动人心的新功能&#xff0c;App端&#xff08;包括iOS和Android&#xff09;开始支持语音对话以及图片识别功能。 这两个功能一如既往的优先开放给Plus用户使用&#xff0c;现在将App更新到最新版本&#xff0c;就能体验。 为什么说激动人心&a…

Android组件通信——PendingIntent(二十八)

1. PendingIntent 1.1 知识点 &#xff08;1&#xff09;了解PendingIntent与Intent的区别&#xff1b; &#xff08;2&#xff09;可以完成Notification功能的开发&#xff1b; &#xff08;3&#xff09;可以使用PendingIntent进行短信的发送&#xff1b; 1.2 具体内容 …

mysql作业(牛客60-80)

文章目录 606162636465666768697071727374757677787980 60 select cust_id from Customers;61 select distinct prod_id from OrderItems;62 select * from Customers;63 小小的脑袋大大的疑惑&#xff0c;按字母排&#xff1f;order by select cust_name from Customers orde…

计算机网络第2章-DNS(3)

DNS&#xff1a;因特网的目录服务 在因特网上&#xff0c;主机和人类都一样&#xff0c;可以用很多种方式进行标识&#xff0c;主机的一种标识方法是它的主机名。 但是主机名一般是用IP来表示&#xff0c;IP是由四个字节组成&#xff0c;并且有严格的层次结构&#xff0c;不利…

不止硬件,苹果的软件也是频出问题!iOS 17.0.3使iPhone在一夜之间随机开关机

就在我们以为iPhone的问题已经解决了一段时间的时候&#xff0c;一个新的问题似乎突然出现了。在Reddit和其他网站上&#xff0c;人们报告说&#xff0c;他们的iPhone在一夜之间莫名其妙地断电&#xff0c;有时会导致错过警报。 目前尚不清楚是什么原因导致了这个问题&#xf…

python利用多线程让http请求异步返回

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 有时我们可能会碰到这样一种情况&#xff1a; 我们有一个功能&#xff0c;这个功能对外提供了一个http接口&#xff0c; 我们需要对这个http接口发起请求才能启…

Liunx中日志分析与网络设置(极其粗糙版)

liunx系统日志的管理 系统日志&#xff1a;操作系统本身和大部分服务器程序的日志文件 日志是记录系统所产生的各种事故&#xff0c;在某个时间节点发生了什么&#xff0c;发生的原因 liunx的路径是/var/log下 /var/log/messages&#xff1a;内核日志还有公共信息日志(所有…

冒泡排序(学习笔记)

冒泡排序&#xff08;基于交换的排序&#xff0c;每一轮确定一个数的位置&#xff09; 哨兵举例&#xff1a; 待排序序列&#xff1a;6 3 1 2 5 第一轮排列&#xff1a; 3 6 1 2 5 3 1 6 2 5 3 1 2 6 5 3 1 2 5 6&#xff08;最大的数移动到了正确的位置&#xff09; 第二轮排列…