【Go编程语言】Hello World中竟暗藏玄机

作者简介:
小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!

文章目录

  • 前言
  • 正文
    • package main
    • import “fmt”
    • func main(){ }
    • 函数间的调用
      • 在同一个目录下函数调用演示
      • 不同目录下函数调用演示
    • 定义变量
    • fmt 常用函数介绍
      • fmt.Print()
      • fmt.Println()
      • fmt.Sprintf()
      • fmt.Printf()
    • 如何运行Go 程序,有两种方式
      • go run
      • go build
    • Go语言中的空行和空格

前言

学习某一门编程语言时大多是从Hello World开始,殊不知Hello World这段程序中暗含了很多知识点。本篇文章以Golang语言为例,看看Hello World中都包含哪些内容。

正文

首先创建一个hello.go 文件

package main

import "fmt"

func main() {
	var text = "Hello World"
	fmt.Printf("Jenny say : %s", text)
}

接下来我们一行一行分析其中的奥秘。

package main

表示该 hello.go 文件所在的包是main,package main表示可独立执行的程序,也就是当某个程序文件中包含package main,那么这个文件就是可执行的,且在go中,每个文件都必须归属于一个包。

import “fmt”

表示引入包,当程序需要打印相关内容时,则可引入“fmt”包,需要注意以下几点:

  • 引入包时,需要加双引号,import “xxx”

  • 当引入多个包时,可用小括号括起来

    import (
    	"fmt"
    	"os"
    )
    

func main(){ }

func 是关键字,用于定义函数,main() 函数和其它编程语言一样,是程序的主函数,也就是程序的入口,程序从main函数开始,以main函数结束。(但如果有init()函数的话,需要先执行init()函数)

另外,需要注意的是 { 不能单独放在一行,例如

func main()
{ //报错
	fmt.Println("hello")
}

编译器会提示语法错误: syntax error: unexpected semicolon or newline before {

函数间的调用

在同一个目录下函数调用演示

项目名为:DemoTest,项目下有两个go文件,分别是main.go 和 demo01.go

//main.go
package main
func main() {
	hello()
}
//demo01.go
package main
import "fmt"
func hello() {
	fmt.Println("hello world")
}

运行命令:go run main.go demo01.go

➜DemoTest go run main.go
# command-line-arguments
./main.go:3:2: undefined: hello

所以,针对同一个目录下go文件的运行,需要输入如下命令
➜DemoTest go run main.go demo01.go
hello world

不同目录下函数调用演示

在项目DemoTest下创建一个文件,名为test,结构如下:DemoTest→test→demo02.go,demo02.go 内容如下:

package test

import "fmt"

func Say() {
	fmt.Println("demo02,hello world")
}

在main函数中 引用Say()函数

package main
import "DemoTest/test"
func main() {
	hello()
	test.Say()
}

当在控制台运行是 go run main.go demo01.go,可能会遇到 main.go:2:8: package DemoTest/test is not in GOROOT (/usr/local/go/src/DemoTest/test)问题,解决方法如下:

➜  DemoTest go mod init DemoTest
go: creating new go.mod: module DemoTest
go: to add module requirements and sums:
	go mod tidy
➜  DemoTest  go mod tidy

此时再运行 go run main.go demo01.go可正常运行。

需要注意的是,不用目录下go文件,不可使用main 包名,可参照demo02.go,改为了package test。

注意:在Go语言中,使用mod来管理包以来问题,go mod tidy 主要用于加载配置第三方路径。

当然你在使用go mod init命令时可能会出现 go: cannot determine module path for source directory /Users/zengzhaoxia/Demotest1 (outside GOPATH, module path must be specified)问题,解决方法如下:

【Go编程语言】Hello World中竟暗藏玄机_第1张图片
因为go.mod文件第一行的module与你设置的不一样,将ProjectName改为Demotest1,即可解决该问题,也就是说go.mod的module中的名字要和项目名保持一致。
【Go编程语言】Hello World中竟暗藏玄机_第2张图片

定义变量

通过var关键词来定义变量,后续会专门来讲解

fmt 常用函数介绍

fmt.Print()

fmt.Print("不换行打印1")
fmt.Print("不换行打印2")
/*
输出的结果为:
不换行打印1不换行打印2
*/

fmt.Println()

fmt.Println("换行打印1")
fmt.Println("换行打印2")
/*
输出的结果为:
换行打印1
换行打印2
*/

fmt.Sprintf()

表示格式化参数并返回字符串

var str1 = "jenny"
var str = fmt.Sprintf("hello %s",str1)
fmt.Println(str)
/*
输出的结果为:
hello jenny
*/

fmt.Printf()

表示格式化参数并标准输出

var str1 = "jenny"
fmt.Printf("hello %s",str1)
/*
输出的结果为:
hello jenny
*/

注意:在格式化参数中,%d 表示整型数字,%s 表示字符串

Go 程序是如何运行起来的。

如何运行Go 程序,有两种方式

go run

go run hello.go
Jenny say : Hello World

go build

➜  go build hello.go    
➜  ls
hello    hello.go
➜  ./hello    
Jenny say : Hello World

注意:go build 后会生成hello 二进制文件,在命令行直接输入./hello,即可运行。
如果你使用的是Windows,那么二进制文件是hello.exe,在命令行直接输入hello.exe即可。

Go语言中的空行和空格

空格通常用于分隔标识符、关键字、运算符和表达式,主要提高代码的可读性,例如

var text = "Hello World"

你可能感兴趣的:(#,Go编程语言,Golang,go语言入门,go基础知识,fmt函数)