首页 > 其他分享 >Golang入门第一天

Golang入门第一天

时间:2023-02-01 23:23:36浏览次数:31  
标签:入门 第一天 int fmt complex2 byte1 Golang Printf var

  1. 变量的使用
  2. 自动推导类型
  3. 多重赋值和匿名变量
  4. 常量的使用
  5. 多重变量或常量的定义
  6. iota枚举
  7. bool布尔类型
  8. 浮点型
  9. 字符类型
  10. 字符串类型
  11. 字符类型和字符串类型的区别
  12. 复数类型

// 1. go语言以包为管理单位
// 2. 每个文件必须先声明包
// 3. 程序必须有一个main包
package main

// 导入包
// 导入的包必须被使用
import (
	"fmt"
)

// 入口函数
func main() { // 左括号必须与函数命同行

	// 变量,手动初始化,定义的变量必须被使用
	var b int = 20
	// 定义变量,自推导数据类型
	a := 10
	fmt.Println("aa = ", a)
	fmt.Printf("b = %T", b)

	// 定义多个变量并推断初始化
	i, j := 10, 20
	fmt.Printf("i = %d, j= %d\n", i, j)

	// go语言可直接交换两个变量的值,无需使用中间变量
	i, j = j, i
	fmt.Printf("i = %d, j = %d\n", i, j)

	//定义常量,且必须马上初始化
	const k int = 30
	const k2 int = 40
	fmt.Printf("k = %d, k2 = %d\n", k, k2)

	// _ 匿名变量,丢弃数据不做处理
	tmp, _ := k, k2
	fmt.Printf("tmp = %d\n", tmp)

	// _匿名变量,一般配合函数返回值使用
	_, tmp, _ = demo()
	fmt.Printf("tmp = %d\n", tmp)

	// 多个变量的定义
	var (
		k3 int = 0
		k4 int = 1
		k5 int = 2
	)
	fmt.Printf("k3 = %d, k4 = %d, k5 =%d\n", k3, k4, k5)

	// 多个常量的定义
	const (
		k6 int = 0
		k7 int = 1
		k8 int = 2
	)
	fmt.Printf("k6 = %d, k7 = %d, k8 =%d\n", k6, k7, k8)

	// iota常量自动生成器,每隔一行,就自动累加一
	// 通常配合常量使用。当作一个枚举使用
	const (
		c1 int = iota
		c2 int = iota
		c3 int = iota
	)
	fmt.Printf("c1 = %d, c2 = %d, c3 =%d\n", c1, c2, c3)

	// iota遇到const自动重置为0,且在同一行的iota的值是相同的
	const (
		c4     int = iota
		c5, c6 int = iota, iota
	)
	fmt.Printf("c4 = %d, c5 = %d, c6 =%d\n", c4, c5, c6)

	// bool 布尔值,零值(初始值) = false
	var b1 = true
	fmt.Printf("b1 = %T\n", b1)
	fmt.Println("b1 = ", b1)

	// 浮点型float32
	var f32 float32
	f32 = 3.14
	fmt.Println("f32 = ", f32)

	// 默认推导小数类型为float64,精度高于float32
	var f64 = 3.14
	fmt.Printf("f64 = %T\n", f64)

	// 字符类型
	var byte1 byte
	byte1 = 97
	fmt.Printf("byte1 = %c, %d\n", byte1, byte1)
	byte1 = 'A'
	fmt.Printf("byte1 = %c, %d\n", byte1, byte1)
	// A = 65, a = 97, 大小写相差32,小写大
	fmt.Printf("大写转化为小写 = %c, %d\n", byte1+32, byte1+32)

	// 字符串类型
	var string1 string
	string1 = "字符串"
	fmt.Printf("string1 = %s\n", string1)
	// 自动推导类型
	var string2 = "字符串2"
	fmt.Printf("String2.type = %T\n", string2)
	// 内建函数len()可以计算字符串长度
	fmt.Printf("string2.length = %d\n", len(string2))

	// 字符和字符串的区别
	var (
		// 字符1-单引号,2-字符,往往都是一个字符,'\n'除外
		char2 byte = 'a'
		// 字符串1-双引号,2-字符串由一个或多个字符组成,3-字符串都是隐藏了一个结束符'\0'
		string3 string = "a"
	)
	fmt.Printf("char2 = %c, string3 = %s\n", char2, string3)

	// 取目标字符串中特定位的字符
	var string4 string = "abc"
	fmt.Printf("string4[0] = %c, string4[1] = %c\n", string4[0], string4[1])

	// 复数类型,分实部和虚部
	var complex1 complex128
	complex1 = 1.2 + 2.1i
	fmt.Println("complex1 = ", complex1)
	// 自动推导类型
	complex2 := 2.1 + 3.1i
	fmt.Printf("complex2.type = %T\n", complex2)
	// 通过内建函数,可以取到实部real()和虚部imag()
	fmt.Println("实部real(complex2) = ", real(complex2), "虚部imag(complex2) = ", imag(complex2))
}

func demo() (a, b, c int) {
	return 1, 2, 3
}

运行结果

PS E:\go> go run .\hello.go
aa =  10
b = inti = 10, j= 20 
i = 20, j = 10       
k = 30, k2 = 40      
tmp = 30
tmp = 2
k3 = 0, k4 = 1, k5 =2
k6 = 0, k7 = 1, k8 =2
c1 = 0, c2 = 1, c3 =2
c4 = 0, c5 = 1, c6 =1
b1 = bool
b1 =  true
f32 =  3.14
f64 = float64        
byte1 = a, 97
byte1 = A, 65
大写转化为小写 = a, 97
string1 = 字符串
String2.type = string
string2.length = 10
char2 = a, string3 = a
string4[0] = a, string4[1] = b
complex1 =  (1.2+2.1i)
complex2.type = complex128
实部real(complex2) =  2.1 虚部imag(complex2) =  3.1
PS E:\go> 

标签:入门,第一天,int,fmt,complex2,byte1,Golang,Printf,var
From: https://www.cnblogs.com/radish40/p/17084479.html

相关文章

  • drf入门——APIView执行流程、Request对象源码分析、序列化器、反序列化及其校验
    drf入门——APIView执行流程、Request对象源码分析、序列化器、反序列化及其校验目录drf入门——APIView执行流程、Request对象源码分析、序列化器、反序列化及其校验APIV......
  • Dubbo 入门系列之快速部署一个微服务应用
    本文将基于DubboSamples示例演示如何快速搭建并部署一个微服务应用。背景Dubbo作为一款微服务框架,最重要的是向用户提供跨进程的RPC远程调用能力。如上图所示,Dubbo......
  • drf从入门到精通(3)
    0drf整体内容#1入门规范-web开发模式-api接口-接口测试工具-restful规范-序列化反序列化-drf快速使用-APIView,Request类-d......
  • Blazor入门100天 : 身份验证和授权 (1)
    目录建立默认带身份验证Blazor程序<AuthorizeView>组件,检查登录信息,级联参数获取身份验证状态数据,基于角色或基于策略的授权,可以在Razor组件中使用[Authorize]......
  • .NET 入门到高级路线
    .NET入门到高级路线[c#基础语法](#CSharp基础语法)[.NETCore基础知识](#.NETCore基础知识)[ASP.NETCore基础知识概述](#ASP.NETCore基础知识概述)[Bla......
  • 快速入门jieba库
    jieba库使用1.介绍jieba库是python中一个非常重要的第三方中文分词函数库,其工作原理是:利用一个中文词库,将待分词的内容与词库进行对比,通过图结构和动态规划的方法找到最......
  • python3 测试框架pytest入门
    1、安装pytest2、安装html插件3、编写测试用例4、执行测试5、生成测试报告1.1安装pytestpip3installpytest执行该命令安装pytest1.2验证安装pytest-V查看当前已安装......
  • Solidity极简入门#7. 映射类型
    这一讲,我们将介绍solidity中的哈希表:映射(Mapping)类型。映射Mapping在映射中,人们可以通过键(Key)来查询对应的值(Value),比如:通过一个人的id来查询他的钱包地址。声明映射的格式为......
  • Solidity极简入门#8. 变量初始值
    变量初始值在solidity中,声明但没赋值的变量都有它的初始值或默认值。这一讲,我们将介绍常用变量的初始值。值类型初始值boolean:falsestring:""int:0uint:0enum:枚举中......
  • Cesium打包入门(gulp与esbuild)_云上飞47636962的博客
    本文针对Cesium源码包的打包工具gulp和esbuild进行了初步探讨,属于入门篇。首先简要介绍采用gulp+esbuild如何为多个源代码文件打包成一个单独文件,然后介绍了下Cesium中的......