一段基础的go语言代码解析

package main

import "fmt"

func main(){
fmt.Println("hello golang")
} // 这是一段输出'hello golang'的go代码
// 一个go文件(后缀名为.go的文件),必须要在一个包(文件夹,package)里
// 代码开始必须引用一个包,main
// 这段代码的入口为main()函数
// 书写一个函数的格式 func 函数名() {
// 函数的逻辑代码
}

代码书写完毕,怎么去运行代码

  • 第一种(推荐):最开始用cmd进入到当前代码的目录下 ,

    执行 go build 文件名.go ---->>> 它会编译这段代码,生成一个文件名.exe的可执行文件,

    最后执行这个可执行文件就行了。

  • 第二种(不推荐):最开始用cmd进入到当前代码的目录下 ,

    执行go run 文件名.go ----->>> 会直接执行go代码

总结上面两种方法:

​ 1)、方式一和方式二达到的效果是完全相同的,go run 这命令其实就是做了方式一的两步,先编译,再执行代码。但是方式二的执行速度比方式一慢,因为他要进行编译。

​ 2)、方式一编译完之后生成的一个可执行的文件,它的大小远远大于那个go文件,这是因为,这个exe文件里有go文件执行需要的一些依赖,你拿着生成的exe(可执行)文件在其他电脑(这台电脑可能没有go语言开发环境)同样是可以执行的。

Go程序开发的注意事项

  • go文件必须是go为后缀名。
  • go程序的执行入口是main()函数。
  • 严格区分大小写。
  • 每行代码后,可以不加分号,go会自动帮你加上。
  • go语言定义的变量或引用的包,不使用会报错,不能进行编译。

Go常用的转义字符

  • \t : 表示一个制表符,通常使用它排版
  • \n : 表示换行
  • \ \ : 转义,最终显示的是 ’\‘
  • \r : 把鼠标光标移到最开始

练习:使用一行代码实现下面图片的格式

package main

import "fmt" // fmt包中提供格式化,输出,输入的函数

func main(){
// 使用一句话输出一个table格式
fmt.Println("姓名\t年龄\t籍贯\t住址\n朱宇\t18\t重庆\t奉节")
}

变量

// 1、定义变量
// 2、赋值
// 3、使用变量
package main
import "fmt" func main(){
// 定义一个int类型的变量名为i
var i int
// 将10的内存地址赋值给变量i
i=10
// 使用变量
fmt.Println(i)
} // Golang变量使用的三种方式
// 1)var i int 定义变量指定类型,但是不赋值,会使用默认值
// 2)var num = 10.10 定义变量不直接类型,直接赋值,程序会自行判断类型
// 3)name := "朱宇" 省略var 但是:=左边不应该是已经声明过的,否则会报错
// 4)var n1,n2,n3 int 一次性定义多个变量
// var name,age,sex = "朱宇",18,"男"
// name,age,sex = "朱宇",18,"男" // Golang变量使用的注意事项
// 5)同一区域里的变量在同一类型中可以不断变化
// 6)在同一作用域中不能重名
// 7)变量 = 变量名 + 类型 + 值

结构struct

Go语言不是一门面向对象的语言,没有面向对象的继承,多态和封装,

但是Go可以通过定义数据结构的方式,也能实现和class相似的功能。

// 写一个例子,实现和class类似的功能
type People struct {
name string
age int
sex string
}
// 上面这段代码就定义了一个People的数据结构,有三个属性,name,age,sex,和下面python代码差不多
class People:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex // 那么在Go语言中怎么对People进行初始化
// 方式一:初始化出一个叫zhuyu的People实例
zhuyu := People {
name:'朱宇',
age:22,
sex:'male',
// 注意:最后sex:'male'后面的逗号(',')必须要加,不然会报错
}
// 方式二:zh := People('张昊',23,'male')
// 方式三:dsb = People()

Golang学习笔记(一)的更多相关文章

  1. golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题

    golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题 下面这个程序运行的能num结果是什么? package main import ( "fmt" " ...

  2. golang学习笔记19 用Golang实现以太坊代币转账

    golang学习笔记19 用Golang实现以太坊代币转账 在以太坊区块链中,我们称代币为Token,是以太坊区块链中每个人都可以任意发行的数字资产.并且它必须是遵循erc20标准的,至于erc20标 ...

  3. golang学习笔记18 用go语言编写移动端sdk和app开发gomobile

    golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...

  4. golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍

    golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍 go语言爬虫框架:gocolly/colly,goquery,colly,chrom ...

  5. golang学习笔记16 beego orm 数据库操作

    golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...

  6. golang学习笔记14 golang substring 截取字符串

    golang学习笔记14 golang substring 截取字符串golang 没有java那样的substring函数,但支持直接根据 index 截取字符串mystr := "hel ...

  7. golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换

    golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...

  8. golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题

    golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...

  9. golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好

    golang学习笔记11   golang要用jetbrain的golang这个IDE工具开发才好  jetbrain家的全套ide都很好用,一定要dark背景风格才装B   从File-->s ...

  10. golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息

    golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放 ...

随机推荐

  1. java程序: 倒计时的小程序 (GridPane, Timer, Calendar, SimpleDateFormat ...)

    倒计时程序 涉及到的东西: javafx简单的界面,布局,按钮,文本框,事件响应 java.util.Timer,用于定时 SimpleDateFormat用于在String和Date之间转换. ja ...

  2. 通过学生-课程关系表,熟悉hive语句

    通过学生-课程关系表,熟悉hive语句 1.在hive中创建以下三个表. create table  student(Sno int,Sname string,Sex string,Sage int, ...

  3. Java中Date()类 日期转字符串、字符串转日期的问题(已解决)

    Java中Date()类 日期转字符串.字符串转日期的问题 今天在写东西的时候突然发现一个问题,就是先new 一个Date()然后将生成的值转为字符串, 然后再将转换后的字符串再次用new Date( ...

  4. Python爬虫《http和https协议》

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...

  5. IntelliJ、ReSharper 6折 加入慧都“惊喜惠”

    慧都2013岁末回馈惊喜不断!著名的软件开发公司JetBrains旗下所有产品加入"惊喜惠"活动环节, JAVA IDE——IntelliJ IDEA,.NET效率工具集——ReS ...

  6. javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误解决办法

    今天不用eclipse.myeclipse等开发工具,纯手写JSP页面(有点作死)时突然出现以前从来没遇到过的问题,报错如下: HTTP Status 500 - java.lang.NoClassD ...

  7. 视频监控——从其他浏览器打开低版本IE方案

    1. 方案背景 由于低版本IE浏览器并不支持很多新的页面技术,导致部分页面效果难以实现;另一方面IE浏览器版本与操作系统绑定,难以统一,不同版本IE间的不兼容导致多种兼容性问题,因此本项目暂定采用Ch ...

  8. 使用mysql5.7新特性解决前通配符查询性能问题

    众所周知,在mysql里的后通配符可以使用索引查找,前通配查询却无法使用到索引,即使是使用到了索引,也是使用了索引全扫描,效率依然不高,再MySQL5.7之前,一直都没有好的办法解决,但是到了MySQ ...

  9. css渲染(三)颜色与背景

    颜色的应用主要分为前景色.背景色和透明三个部分. 一.前景色 color color前景色 值: <color> | inherit 初始值: 用户代理特定的值 应用于: 所有元素 继承性 ...

  10. WPF产生不重复的随机数

    WPF产生不重复的随机数 在给定的区间范围(比如[50,99]),产生给定数量的随机数(不如10个),要求产生的随机数不重复首先给定变量min=50;max=99+1;//习惯与程序规定的编码不同所致 ...