【Go】基础语法学习_go的语法知识-程序员宅基地

技术标签: golang  【Golang】  后端  开发语言  

0 简介

0.1 语言简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

0.2 快速入门

快速入门

package main
import "fmt"

func main() {
   
    
	fmt.Println("hello xhh")
}	
go build hello.go // [1] 编译
go build -o xhh.exe hello.go
hello.exe         // [2] 运行

go run hello.go   // 编译+运行

gofmt main.go // 格式化代码 并 显示
gofmt -w main.go // 格式化并写入
0.3 执行流程

在这里插入图片描述
在这里插入图片描述

0.4 语法要求

在这里插入图片描述
在这里插入图片描述

0.5 获取输入
func Scanf(format string, a ...interface{
   
    }) (n int, err error)
func Scanln(a ...interface{
   
    }) (n int, err error)
package main

import(
	"fmt"
)

func main() {
   
    
	// [1] Scanln
	var inputStr string
	fmt.Scanln(&inputStr)
	fmt.Println("xhh input: ", inputStr)

	// [2] Scanf
	var name string
	var age int
	fmt.Println("please input name age ...")
	fmt.Scanf("%s %d", &name, &age)
	fmt.Println("xhh input: ", name, "--", age)
}
0.6 环境配置项目结构
  • 配置环境变量

  • GOPATH(go的项目路径)

  • GOROOT(go的安装路径)

在这里插入图片描述
在这里插入图片描述

  • 项目路径结构

在这里插入图片描述

1 数据类型

1.1 快速入门和注意事项

在这里插入图片描述

package main
import "fmt"

// 全局声明方式一
var mm1 = 99
var mm2 = "xhh"

// 全局声明方式二
var (
	mm3 = 88
	mm4 = "mcy"
)


func main() {
   
    
	// [1] 声明+赋值
	var i int
	i = 1
	// [2] 变量
	var j int = 99;
	fmt.Println("i = ", i, " j = ", j)

	// [3] 自动类型推导 类python
	var num2 = 3.14
	// [4] 声明+定义 以冒号形式
	// 等价于 var str2 string = "xhh"
	str2 := "xhh"
	fmt.Println("num2 : ", num2, " str2 : ", str2)

	// [5] 多变量
	var n1, n2, n3 int
	fmt.Println(n1, n2, n3)
	var nn, name, addr = 99, "mcy", "lc"
	fmt.Println(nn, name, addr)
	fmt.Println(mm1, mm2, mm3, mm4)
}	

在这里插入图片描述

1.2 基本类型
  • int
    在这里插入图片描述

  • uint
    在这里插入图片描述

  • 其他
    在这里插入图片描述

  • 类型和占用字节数

package main

import(
	"fmt"
	"unsafe"
)

func main() {
   
    
	var num int32 = 18
	// num value[18] type[int32] size[4]
	fmt.Printf("num value[%d] type[%T] size[%d]", num, num, unsafe.Sizeof(num))
}
  • float
    在这里插入图片描述

  • char

var c1 byte = 'a'
fmt.Printf("c = %c", c1)

在这里插入图片描述

  • string

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 基本类型之间的转换

需要显示转换

var n1 int = 1
var n2 float32 = float32(n1)
  • 与string之间的转换

  • 【1】基本数据类型转string

fmt.Sprintf

package main

import(
	"fmt"
	_ "unsafe"
)

func main() {
   
    
	
	var v1 int = 99
	var v2 float64 = 3.14
	var v3 bool = true
	var v4 byte = 'a'
	var str string

	// [1] fmt.Sprintf
	str = fmt.Sprintf("[%d]-[%f]-[%t]-[%c]", v1, v2, v3, v4)
	// str: [99]-[3.140000]-[true]-[a]  type[string]
	fmt.Printf("str: %v  type[%T]", str, str)
}

strconv
在这里插入图片描述

func Itoa(i int) string
  • 【2】string转基本数据类型

strconv包

func ParseBool(str string) (value bool, err error)
func ParseInt(s string, base int, bitSize int) (i int64, err error)
func ParseUint(s string, base int, bitSize int) (n uint64, err error)
func ParseFloat(s string, bitSize int) (f float64, err error)
1.4 指针、值类型和引用类型
  • 简介
    在这里插入图片描述

  • 值类型和引用类型

在这里插入图片描述

  • 保留字
    在这里插入图片描述
    在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45292794/article/details/120835214

智能推荐

《树莓派Python编程入门与实战》——3.2 检查你的Python环境-程序员宅基地

文章浏览阅读304次。本节书摘来异步社区《树莓派Python编程入门与实战》一书中的第3章,第3.2节,作者:【美】Richard Blum,更多章节内容可以访问云栖社区“异步社区”公众号查看3.2 检查你的Python环境树莓派Python编程入门与实战Raspbian发行版默认安装了Python第三版环境和一些必要的工具。下面是预装了的Python功能。Python..._怎么查树莓派是否有python环境?

工具IDEA 配置springboot+maven项目-程序员宅基地

文章浏览阅读81次。工具IDEA 配置springboot+maven项目 首先安装IDEA,至于怎么安装就不介绍了。。第一步 配置maven环境 首先安装maven,先在网上下载一个maven包。在IDEA的settings中Maven设置 点击USer settings file 文件夹正常的是空白 如图找到你下载的maven文件夹,引入setti..._maven项目怎么配置springboot

GSL 系列 5 — 向量和矩阵 2 — 向量 (vector)_gsl_vector *-程序员宅基地

文章浏览阅读1.3k次。文章目录0 写在前面1 向量 (vector)0 写在前面因为向量是构建于块之上,请先理解块,参见:GSL 系列 5 — 向量和矩阵 1 — 块 (block)1 向量 (vector)向量建构于块之上,添加了对块的切片描述,向量切片必须是内存空间中一组等间隔的元素,不同的向量可以创建于一个块之上,定义如下:// gsl_vector_double.htypedef struct {..._gsl_vector *

c语言 之求 Fibionacci 数列的前n个数_求fib序列c语言-程序员宅基地

文章浏览阅读1.9k次。Fibionacci数列有如下特点:前两个数都为1,从第三个数开始,该数是前两个数之和。即:F1=1;(n=1)F2=1;(n=2)Fn=Fn-1+Fn-2;(n>2)下面给出几种求法:解法一:#include int fib(int n){ int fib1 =1; int fib2 =1; int fib = 1; int i = 0; while (_求fib序列c语言

matlab aerospace模块,免费试用Aerospace Toolbox-程序员宅基地

文章浏览阅读302次。请选择其一AlabamaAlaska美属萨摩亚APO/FPO AAAPO/FPO AEAPO/FPO APArizonaArkansasCaliforniaCaroline IslandsColoradoConnecticutDelawareDistrict of ColumbiaFlorida格鲁吉亚关岛HawaiiIdahoIllinoisIndianaIowaKansasKentuckyLo..._aerospace toolbox的使用

Google构建VR/AR生态系统标准“双平台”,高性能传感器同样需验证-程序员宅基地

文章浏览阅读106次。集微网消息,近几年以VIVE/Oculus Rift为代表的VR产品的热销,带动了VR市场的兴起,同时随着去年AR游戏的迅速普及和今年春节前支付宝上线了AR实景红包,引爆AR市场,VR/AR已经进入了人们的日常生活。根据投资银行Digi-Capital预测,至2020年,全球VR与AR市场规模将达到1500亿美元。IDC公司近期预测,中国VR市场将在20..._谷歌为开发者提供的俩个vr ar平台是

随便推点

OpenSSL杂记(CA证书)-程序员宅基地

文章浏览阅读896次。OpenSSL和OpenSSHOpenSSH只允许白名单的用户登录1、限制前:[email protected]'s password: [ww@qq ~]$ exitlogoutConnection to 10.201.106.129 closed.[root@zz ~]# ssh [email protected]@10.201.106.129's password: ...

GPIO 口的输入,输出模式及其说明_gpio_mode_in-程序员宅基地

文章浏览阅读4.2w次,点赞65次,收藏351次。GPIO端口各种模式的区别(1)GPIO_Mode_AIN 模拟输入(2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7)GPIO_Mode_AF_OD 复用开漏输出(8)GPIO_Mode_A..._gpio_mode_in

CSS的三种引入方式_css 的三种引入方式-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏14次。CSS的引入方式共有三种:行内样式、内部样式表、外部样式表。_css 的三种引入方式

javascript用js简单的实现电子时钟_4、编写程序,实现电子时钟效果,要求每隔1秒获取一次当前时间,并提供一个按钮控制-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏12次。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><!--给div一个简单样式--><..._4、编写程序,实现电子时钟效果,要求每隔1秒获取一次当前时间,并提供一个按钮控制

HIDL最全编译流程_如何编译hidl-程序员宅基地

文章浏览阅读2.1w次,点赞22次,收藏151次。想了解HIDL介绍的可以参考《HIDL概述》,本篇文章主要介绍HIDL的详细编译流程及简单的客户端应用(C++跟Android客户端的应用)。一、准备工作整一套源码,Android O或者Android P的 保证全套代码已经全编译,原生代码全编译命令source build/envset.sh lunch make 3、hidl-gen工具已经安装,安装命令make h..._如何编译hidl

jupyter notebook在一个.ipynb中调用另一个文件里的函数-程序员宅基地

文章浏览阅读873次。import一个路径解析的.py模块参考资料:http://blog.csdn.net/wangjian1204/article/details/67633614转载于:https://www.cnblogs.com/HITSZ/p/7099872.html_ipynb可以调其它python里的函数吗