Go语言入门心法(一)

news2025/1/11 9:56:05


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/1092873.html

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

相关文章

JVM基础:初识JVM

IDE&#xff1a;IntelliJ IDEA 2022.1.3 x64 操作系统&#xff1a;win10 x64 位 家庭版 文章目录 一、JVM是什么&#xff1f;二、JVM有哪些功能&#xff1f;2.1 解释和运行2.2 内存管理2.3 即时编译 三、有哪些常见的JVM&#xff1f;3.1 常见JVM3.2 Java虚拟机规范3.3 HotSpot的…

工业网关它的功能是什么

随着工业4.0的到来&#xff0c;工业网关在工业自动化领域中的作用越来越重要。工业网关是一种连接不同工业设备的网络设备&#xff0c;它能够实现不同设备之间的通信和数据传输。本文将以HiWoo Box为例&#xff0c;介绍工业网关的主要功能和应用场景。 一、工业网关的主要功能…

推荐几款简单易用的协作化项目管理工具

您是否正在寻找一种有效且简单的项目管理工具来帮助您与团队成员协作?项目管理工具在当今的商业世界中已经变得必不可少&#xff0c;因为它们帮助团队保持组织和生产力。找到合适的工具是困难的&#xff0c;因为有太多的选择。有些工具是为特定类型的项目设计的&#xff0c;而…

zabbix触发器与动作

一、触发器&#xff08;Trigger&#xff09; 1、概念&#xff1a; 在 Zabbix 中&#xff0c;触发器用于监测 Zabbix 监控系统中的各种指标和条件&#xff0c;并在特定条件满足时触发警报。&#xff08;触发器用于定义监控项的报警阈值&#xff09; 2、触发器对象&#xff1a…

CCF CSP认证 历年题目自练Day31

题目一 试题编号&#xff1a; 202206-1 试题名称&#xff1a; 归一化处理 时间限制&#xff1a; 500ms 内存限制&#xff1a; 512.0MB 题目背景 在机器学习中&#xff0c;对数据进行归一化处理是一种常用的技术。 将数据从各种各样分布调整为平均值为 0、方差为 1的标准分布&a…

Windows服务器监控工具

随着Windows服务器成为大多数网络不可或缺的一部分&#xff0c;一些关键业务功能永远依赖于它们的正常运行时间。其可用性和性能受到打击可能会对这些功能产生不利影响&#xff0c;进而极大地影响收入。 由于这些情况&#xff0c;通过主动衡量其性能并使用有效的Windows服务器…

html进阶语法

html进阶 列表、表格、表单 目标&#xff1a;掌握嵌套关系标签的写法&#xff0c;使用列表标签布局网页 01-列表 作用&#xff1a;布局内容排列整齐的区域。 列表分类&#xff1a;无序列表、有序列表、定义列表。 无序列表 作用&#xff1a;布局排列整齐的不需要规定顺序的…

21面向对象描述器

目录 1、什么是描述器&#xff1f; 1、原始的代码可以理解成为这样&#xff1a; 2、增加解释器可以改成如下&#xff0c;解释器就是集增删改查为一体的一个小的property 有一点需要注意的地方是&#xff1a;property里面内置的参数不是get_age()就是不用调用。 3、装饰器可…

【从零开始学习Redis | 第一篇】快速了解Redis

前言&#xff1a; 本篇对于Redis的讲解可以让我们简单的了解什么是Redis以及他的简单应用。主要还是因为我在学习苍穹外卖的时候&#xff0c;用到了这个知识点&#xff0c;而在平时的各种学习中&#xff0c;对于Redis的大名也是早有耳闻&#xff0c;因此今天来简单的介绍一下re…

基于动物迁徙优化的BP神经网络(分类应用) - 附代码

基于动物迁徙优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于动物迁徙优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.动物迁徙优化BP神经网络3.1 BP神经网络参数设置3.2 动物迁徙算法应用 4.测试结果…

推荐八个大学搜题软件和学习工具哪个好用且免费,一起对比看看

以下分享的软件提供了各种实用的功能&#xff0c;如数学公式计算、语文阅读辅助等&#xff0c;让大学生们在学习过程中更加高效和便利。 1.九超查题 这是一个老公众号了&#xff0c;我身边的很多朋友都在用&#xff0c;支持超新星、学习强国、知到、智慧树和各类专业网课题目…

PCB板的元素组成

PCB板是电子工艺一道重要的步骤&#xff0c;市面上几乎所有的电子产品的主板组成都是PCB板。 那正常一块PCB板上有哪些元素呢&#xff1f;正常一般会包括边框&#xff0c;过孔&#xff0c;通孔&#xff0c;铺铜等等。 焊盘&#xff1a; 就是用于焊接元器件&#xff0c;IC等引脚…

NSSCTF做题(9)

[GDOUCTF 2023]<ez_ze> 看见输入框而且有提示说是ssti注入 输入{{7*7}} 试试&#xff0c;发现报错 输入{%%}发现了是jinja2模板 找到关键函数 Python SSTI利用jinja过滤器进行Bypass ph0ebuss Blog 原理见这篇文章&#xff0c;这里直接给出payload {%set ninedict(aaa…

电子电器架构——基于Adaptive AUTOSAR的电子电器架构简析

基于Adaptive AUTOSAR的电子电器架构简析 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

Jetpack:007-Kotlin中的Button

文章目录 1. 概念介绍2. 使用方法2.1 Button2.2 IconButton2.3 ElevatedButton2.4 OutlinedButton2.5 TextButton2.6 FloatingActionButton 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中输入框相关的内容&#xff0c;本章回中将要介绍 Button。闲话休提&#xff0…

微信小程序入门讲解【超详细】

一. 微信小程序简介 1.1 什么是小程序 2017年度百度百科十大热词之一 微信小程序&#xff08;wei xin xiao cheng xu&#xff09;&#xff0c;简称小程序&#xff0c;英文名Mini Program&#xff0c;是一种不需要下载安装即可使用的应用( 张小龙对其的定义是无需安装&#xf…

C++指针解读(5)-- 指针和数组(多维数组)

相比一维数组&#xff0c;二维数组的概念和相关运算要复杂得多。 1、二维数组的存储及访问 假设有这么一个二维数组&#xff1a; int arr[3][4] {{ 10, 11, 12, 13 },{ 20, 21, 22, 23 },{ 30, 31, 32, 33 } }; 我们可以把二维数组看成数组的数组&#xff1a; &#xff…

Spring Cloud--Nacos+@RefreshScope实现配置的动态更新

原文网址&#xff1a;Spring Cloud--NacosRefreshScope实现配置的动态更新_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringCloud整合Nacos使用RefreshScope实现动态更新配置。 官网 Nacos Spring Cloud 快速开始 动态更新的介绍 动态更新的含义&#xff1a;修改应…

TOR(Top of Rack)

TOR TOR&#xff08;Top of Rack&#xff09;指的是在每个服务器机柜上部署1&#xff5e;2台交换机&#xff0c;服务器直接接入到本机柜的交换机上&#xff0c;实现服务器与交换机在机柜内的互联。虽然从字面上看&#xff0c;Top of Rack指的是“机柜顶部”&#xff0c;但实际T…

简述什么是值传递和引用传递?

1、什么是值传递,什么是引用传递? 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数…