自学golang【第三章:第一个go语言程序】使用goland创建第一个go程序,main函数与init函数,使用go实现运行windows命令,实现cmd的数据输出

目录

一,使用goland创建第一个go程序

1,打开goland,点击new project后,选择路径,点击creat

2,点击以下目录输入main

3,输入以下代码后点击run

4,这样我们就成功运行出了第一个go程序

二,main函数与init函数

三,使用go实现运行windows命令

四,实现cmd的数据输出


一,使用goland创建第一个go程序

1,打开goland,点击new project后,选择路径,点击creat

2,点击以下目录输入main

3,输入以下代码后点击run

package main//声明main包

import "fmt"//导入fmt包,打印字符串时会用到这个包

func main(){ // 声明 main 主函数

fmt.Println("hello world!") // 输出语句,用于输出hello world!

}

代码说明:

package(创建包)

Go语言以“包”作为管理单位,每个Go 源文件必须先声明它所属的包,所以我们会看到每个 Go 源文件的开头都是一个 package 声明

package name

其中 package是声明包名的关键字,name 为包的名字。

Go语言的包与文件夹是一一对应的,它具有以下几点特性:

  • 一个目录下的同级文件属于同一个包。
  • 包名可以与其目录名不同。
  • main 包是Go语言程序的入口包,一个Go语言程序必须有且仅有一个 main 包。如果一个程序没有 main 包,那么编译时将会出错,无法生成可执行文件。

import(导入包)

在包声明之后,是import 语句,用于导入程序中所依赖的包,导入的包名使用双引号""包围,格式如下:

import "name"

其中import 是导入包的关键字,name 为所导入包的名字。 

代码第4 行导入了 fmt 包,这行代码会告诉 Go 编译器,我们需要用到 fmt 包中的函数或者变量等,fmt包是Go语言标准库为我们提供的,用于格式化输入输出的内容(类似于C语言中的 stdio.h 头文件),类似的还有 os 包、io 包等。 

另外有一点需要注意,导入的包中不能含有代码中没有使用到的包,否则Go编译器会报编译错误,例如 imported and not used:"xxx","xxx" 表示包名。 

也可以使用一个import 关键字导入多个包,此时需要用括号( )将包的名字包围起来,并且每个包名占用一行,也就是写成下面的样子:

import(

    "name1"

    "name2"

)

main函数

代码的第7 行创建了一个 main 函数,它是Go语言程序的入口函数,也即程序启动后运行的第一个函数。main 函数只能声明在 main包中,不能声明在其他包中,并且,一个 main 包中也必须有且仅有一个 main 函数。

C/C++ 程序的入口函数也是 main(),一个 C/C++ 程序有且只能有一个main() 函数。

main函数是自定义函数的一种,在Go语言中,所有函数都以关键字 func 开头的,定义格式如下所示:

func 函数名 (参数列表) (返回值列表){

    函数体

}

格式说明如下:

  • 函数名:由字母、数字、下画线_组成,其中,函数名的第一个字母不能为数字,并且,在同一个包内,函数名称不能重名。
  • 参数列表:一个参数由参数变量和参数类型组成,例如func foo( a int, b string )。
  • 返回值列表:可以是返回值类型列表,也可以是参数列表那样变量名与类型的组合,函数有返回值时,必须在函数体中使用 return 语句返回。
  • 函数体:能够被重复调用的代码片段。

注意:Go语言函数的左大括号{必须和函数名称在同一行,否则会报错。

打印 Hello World

代码的第8 行fmt.Println("Hello World!")中,Println 是 fmt 包中的一个函数,它用来格式化输出数据,比如字符串、整数、小数等,类似于C语言中的printf 函数。这里我们使用 Println 函数来打印字符串,也就是( )里面使用""包裹的部分。

注意,Println函数打印完成后会自动换行,ln是 line 的缩写。

点号.是Go语言运算符的一种,这里表示调用 fmt 包中的Println 函数。

 另外,代码fmt.Println("Hello World!")的结尾,不需要使用;来作为结束符,Go 编译器会自动帮我们添加,当然,在这里加上;也是可以的。

4,这样我们就成功运行出了第一个go程序

二,main函数与init函数

我的总结:init函数不能被其他函数调用,不能有返回值,可重复定义多个。运行时是先执行init函数中的值,和放置顺序无区别。

init函数和main函数的异同

    相同点: 两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。

    不同点:

        init可以应用于任意包中,且可以重复定义多个。

        main函数只能用于main包中,且只能定义一个。

两个函数的执行顺序:

对同一个go文件的init()调用顺序是从上到下的。

对同一个package中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的init()函数。

对于不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init(),如果package存在依赖,则先调用最早被依赖的package中的init(),最后调用main函数。

如果init函数中使用了println()或者print()你会发现在执行过程中这两个不会按照你想象中的顺序执行。这两个函数官方只推荐在测试环境中使用,对于正式环境不要使用。

三,使用go实现运行windows命令

cmd命令参考这篇博客:【cmd命令大全】windows10系统命令汇总_立志冲海大-CSDN博客

package main

import "os/exec"

func main(){

cmd:=exec.Command("notepad")//cmd命令指令:=创建一个命令指令

cmd.Run()//执行指令

}

四,实现cmd的数据输出

package main

import (

"fmt"

"os/exec"

)

func main(){

cmd:=exec.Command("tasklist")//cmd命令指令:=创建一个命令指令

out,_:=cmd.CombinedOutput()//获取命令输出,_用于处理异常结果

fmt.Printf("%s",out)//显示结果

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立志冲海大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值