Go 语言核心概念解析:开启高效编程之门(二)

发布于:2025-07-02 ⋅ 阅读:(17) ⋅ 点赞:(0)

🎼个人主页:【Y小夜】

😎作者简介:一位双非学校的大三学生,编程爱好者,

专注于基础和实战分享,欢迎私信咨询!

🎆入门专栏:🎇【MySQLJavawebRustpython

🎈热门专栏:🎊【SpringbootRedisSpringsecurityDockerAI】 

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

目录

🎈从Hello World开始

🎑使用记事本

🎑使用GoLand

🎄可能出现的问题

🎈注释

🎑单行注释

🎑多行注释

🎈变量

🎑不同类型

🎄定义多个变量

🎈变量初始化

🎑自动推导

🎑打印类型

🎈内存地址

🎈变量交换

🎈匿名变量

🎈变量作用域

🎑局部变量

🎑全局变量


🎈从Hello World开始

        在Go语言中,命名为main包的具体特殊的含义,Go语言的编译程序会试图把这种名字的包编译为二进制可执行文件,所有用Go语言编译的可执行文件都必须有一个名为main的包,一个可执行程序有且仅有一个main包。

        main()函数是程序的入口,如果没有这个函数,程序就没办法开始执行。

🎑使用记事本

在桌面上新建一个文件夹

创建txt文件,并将后缀名改为.go

使用记事本进行编辑

将以下代码放入记事本中

package main
import "fmt"
func main(){
	fmt.Println("Hello World!")
}

在目录栏输入cmd,打开windows命令行

然后使用命令运行文件

go run hello.go

发现输出Hello World!成功。

🎑使用GoLand

使用GoLand建立一个文件

将刚刚的代码填入

运行,发现输入Hello World!成功。

🎄可能出现的问题

但我们点击运行的时候,发现控制台上会报错:

我们需要使用go env命令查看到GO111MODULE为空

输入以下代码。

go env -w GO111MODULE=off

再重新执行,发现就可以成功了。

🎈注释

       注释是给人看的,为了防止自己看不懂自己的代码,或者你想把你的代码给别人看,这个时候,我们就需要注释了!

🎑单行注释

单行注释可以使用快捷键 CTRL+/

package main

import "fmt"
//只是第一个单行注释
func main() {
	fmt.Println("hello world")
}

🎑多行注释

多行注释需要先选中要注释的内容,然后点击快捷键 CTRL+SHIFT+/

package main

import "fmt"

/*这是第一个多行注释*/
func main() {
	fmt.Println("hello world")
}

🎈变量

        这里就不解释概念了,简而言之,就是会变化的量。

        Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。这里和Java是一样的。

         var形式的声明语句往往用于需要显式指定变量类型的地方,或者因为变量稍后会会被重新赋值而初始值无关紧要的地方。

package main

import "fmt"

func main() {
	var name string = "aaaa"
	fmt.Println(name)
}

也可以给name重新赋值

package main

import "fmt"

func main() {
	var name string = "aaaa"
	name = "bbbb"
	fmt.Println(name)
}

赋值过程,相当于替换掉了

🎑不同类型

package main

import "fmt"

func main() {
	var name string = "aaaa"
	var age int = 18
	fmt.Println(name, age)
}

🎄定义多个变量

package main

import "fmt"

func main() {
	var (
		name string
		age  int
		addr string
	)
	fmt.Println(name, age, addr)
}

每个类型都有默认值,string 默认值为null,int默认值0

🎈变量初始化

package main

import "fmt"

func main() {
	var (
		name string
		age  int
		addr string
	)
	name = "ysa"
	age = 20
	addr = "河南"
	fmt.Println(name, age, addr)
}

 

🎑自动推导

使用 := 编译器会自动推导类型

package main

import "fmt"

func main() {
	name:="aaa"
	age:= 10
	fmt.Println(name, age)
}

 

但是你如果是定义过的变量,你就无法进行初始化了,会报错,例如:

package main

import "fmt"

func main() {
	var name string
	name := "aaa"
	age := 10
	fmt.Println(name, age)
	fmt.Printf("%T,%T", name, age)
}

只用等号进行赋值

🎑打印类型

package main

import "fmt"

func main() {
	name := "aaa"
	age := 10
	fmt.Println(name, age)
	fmt.Printf("%T,%T", name, age)
}

 

🎈内存地址

执行以下代码,得到内存地址

package main

import "fmt"

func main() {
	name := "Alice"
	fmt.Printf("num:%d,内存:%p", name, &name)
}

 

给他重新赋值,会发现,他的内存地址其实不会发生变化

package main

import "fmt"

func main() {
	name := "Alice"
	fmt.Printf("num:%d,内存:%p\n", name, &name)
	name = "aaaa"
	fmt.Printf("num:%d,内存:%p", name, &name)
}

 

但你把程序停了,也就代表着内存被销毁了,下次运行会重新赋值。

🎈变量交换

其他语言一般都是,使用一个中间值进行变量交换

让我们看一下Go语言怎么进行交换的,他的交换方式和Py是相同的。 

package main

import "fmt"

func main() {
	var a int = 1
	var b int = 2
	b, a = a, b
	fmt.Println(a, b)
}

 

🎈匿名变量

        匿名变量的特点就是画一个下划线“_”,“_”本身就是一个特殊的标识符,被称为空白标识符。他可以像其他标识符那样用于变量的声明和赋值(任何类型都可以赋给它)。但任何赋给它的值都会被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其他变量的赋值或运算。

        匿名变量不会占用内存空间,不会分配内存

        先定义一个函数,用于返回值

package main

import "fmt"

func test() (int, int) {
	return 100, 200
}
func main() {
	a, b := test()
	fmt.Println(a, b)
}

 

如果后期不在使用b,那么就可以使用"_"去接收它。

package main

import "fmt"

func test() (int, int) {
	return 100, 200
}
func main() {
	a, _ := test()
	fmt.Println(a)
}

🎈变量作用域

        概念不再解释了,直接上代码,不过Go语言在编译时候会检查变量是否使用过,一旦出现未使用的变量。

🎑局部变量

这种会直接爆红

package main

import "fmt"

func main() {
	name := "aaa"
	fmt.Println(name)
}
func aa() {
	name
}

 

🎑全局变量

这种自我推导情况会报错

package main

import "fmt"

//var name string
name:="aaa"
func main() {
	fmt.Println(name)
}
func aa() {
	fmt.Println(name)
}

这种是可以正常使用的 

package main

import "fmt"

var name string = "aaa"

func main() {
	fmt.Println(name)
}
func aa() {
	fmt.Println(name)
}

并且使用全局变量后,还可以在局部定义,并且输出是局部的(就近原则)

package main

import "fmt"

var name string = "aaa"

func main() {
	name := "bbb"
	fmt.Println(name)
}


网站公告

今日签到

点亮在社区的每一天
去签到