首页 > 其他分享 >Go-day2——go语言变量类型、常量、函数基础、函数高级

Go-day2——go语言变量类型、常量、函数基础、函数高级

时间:2023-04-25 14:58:28浏览次数:38  
标签:函数 int fmt day2 Println func go 变量

目录

一、go语言变量类型

# 数字  
# int 整数有正负   int8  int16   int32   int64
	java		 byte   short  int     long
	-int8 一个字节表示(8个比特位) 范围: -2的7次方  到  +2的7次方-1
    -int16 2个字节表      范围: -2的15次方  到  +2的15次方-1
    -同理以此类推
    -int:32位机器,是int32,64位机器是int64
  

# uint  正整数  uint  uint8  uint16   uint32   uint64
	-uint8 一个字节表示(8个比特位) 范围: 0 到  +2的8次方-1
	-uint16 2个字节表示(8个比特位) 范围: 0 到  +2的16次方-1
    -uint:32位机器,是uint32,64位机器是uint64
    
# 浮点型:表示小数  表示小数后范围不一样
	float32:
    float64:
    
    
# 复数类型  实部和虚部
    complex64 
    complex128
    
    
# rune  byte
byte 是 uint8 的别名
rune 是 int32 的别名


# string
	-双引号包裹的:不能换号
    -反引号包裹的:可以换行

# go 也有单引号包裹的,它不是字符串


# 布尔类型
	true
    false

二、常量

package main

import "fmt"

// 常量:恒定不变的变量,一旦定义,值固定了,不允许修改  const关键字定义的变量
//func main() {
//
//	// 定义常量  const
//	//const name string="lqz"
//	const name ="lqz"
//	fmt.Println(name)
//
//}

// 变量,常量的作用域范围   (变量只要不再同一个范围内,是可以再定义的)

var name = "lqz"
//name:="lqz"
func main() {
	//var name = "pyy"
	name="pyy"
	fmt.Println(name)

}


//  LEGB各自代表的含义


// 5 iota的使用  必须用const关键字
// 同时定义多个常量,第二个如果没有赋初值,初值就是上一个的值
// iota的用法一:后续定义的常量会自增,后续的就可以不用等于iota,会自增
// 只要用了iota,后续的都会自增1,
// iota 放在第几行,值就是多少,后续的都会自增
const (
	a = 10
	b
	c
	d = iota
	e
)

func main() {
	fmt.Println(c)
}

三、函数基础

package main

import "fmt"

// 函数

func main() {
	//1 调用普通函数
	//test()

	// 2 调用有参数的函数 (类型必须严格一致,有几个值就传几个值,按位置,没有关键字传参)
	//test1(11, "lqz")

	// 3 调用简写的有参函数
	//test2(11, 12, "lqz")

	// 4 调用有返回值的函数
	//res := test3(1, 2)
	//var res = test3(1, 2)
	//var res int= test3(1, 2)
	//fmt.Println(res)
	//test3(3, 4)

	// 5 调用多个参数,多个返回值的函数  必须用多个接收,有几个就要用几个变量接收,不能多不能少
	//res1, res2, res3 := test4(5, 6)
	//fmt.Println(res1)
	//fmt.Println(res2)
	////fmt.Println(res3)
	// 5.1 就不想要第三个参数,后面不会用第三个参数
	//_, _, res1 := test4(5, 6)   // 忽略掉第三
	//fmt.Println(res1)
	////fmt.Println(res2)
	////fmt.Println(res3)
	//fmt.Println(_)  //不能当变量用,就是个空白

}

// 1 定义普通函数,没有参数,没有返回值
func test() {
	fmt.Println("我是普通函数")
}

// 2 有参数的函数,必须指定参数类型
func test1(a int, b string) {
	fmt.Println(a)
	fmt.Println(b)
}

// 3 有参数的函数,多个参数,类型一致可以简写  (go语言想发设法让你少写代码)
//func test2(a, b int, c string) {
//	fmt.Println(a)
//	fmt.Println(b)
//	fmt.Println(c)
//}

// 4 既有参数,又有返回值的 ,只有一个返回值的,需要指明返回值类型
func test3(a, b int) int {
	return a + b
}

// 5 多个参数,多个返回值

func test4(a, b int) (int, int, string) {
	return a + b, a * b, "成功"
}

四、函数高级

# 同一个包下,变量,函数只能定义一次

# 匿名函数:函数没有名字,一般定义在其他函数内部
f := func() {

}
package main

import "fmt"

// 函数高级
func main() {
	// 1 匿名函数
	//test5()

	// 2 匿名函数赋值给变量
	//test6()

	// 3 调用函数,返回闭包函数
	res := test7()
	fmt.Println(res) //0x68de00 内存地址
	res()

}

// 1 匿名函数加括号直接调用
func test5() {
	func() {
		fmt.Println("我是内层函数")
	}()
}

// 2 匿名函数赋值给一个变量--->函数是一种类型---》在go中,函数又称一等公民(可以赋值给变量的都叫一等公民),又叫头等函数,一等函数
//func test6() {
//	//f:=func() {
//	//	fmt.Println("我是内层函数")
//	//}
//	// f 类型是什么呀?完整定义,写类型
//	var f func() = func() {
//		fmt.Println("我是内层函数")
//	}
//	fmt.Printf("%T", f) // func()
//
//}

// 3 函数是一等公民,是一种类型---》函数的参数和返回值都是类型的一部分

//func test6() {
//	var f func() = func() {
//		fmt.Println("我是内层函数")
//	}
//	var f1 func(int) int = func(a int) int {
//		fmt.Println(a)
//		return 10
//	}
//	var f2 func(int) string = func(c int) string {
//		fmt.Println(a)
//		return "10"
//	}
//	fmt.Printf("%T\n", f)
//	fmt.Printf("%T", f1)
//	f2(1)
//}

func test7() func() {
	//return func() {
	//	fmt.Println("我是内存函数")
	//}
	t := 10
	f := func() {
		fmt.Println(t)
		fmt.Println("我是内存函数")
	}
	return f // 闭包函数
}

五、作业

# python 的collections包下有哪些类型
	-collections 是 python 的内置模块,提供了很多方便且高性能的关于集合的操作,掌握这些知识有助于提高代码的性能和可读性
    
# python实现排序算法


标签:函数,int,fmt,day2,Println,func,go,变量
From: https://www.cnblogs.com/zhihuanzzh/p/17352568.html

相关文章

  • C++ shared_ptr 虚析构函数 特殊
    classa{public:~a(){cout<<"a"<<endl;}classb:publica{public:~b(){cout<<"b"<<endl;}voidmain(){shared_ptrA;{shared_ptrB(newb());//智能指针内部,uses引用值为1A=B;//智能指针内部,uses引用值为2,子类父类的智能指针可以一起计数}//离开作用......
  • [译]Golang template 小抄
    [译]Golangtemplate小抄目录[−]解析和创建模板命名模板创建模板解析多个模板解析字符串模板执行模板执行简单模板执行命名的模板模板编码和HTML上下文编码安全字符串和HTML注释模板变量.字符模板中的变量模板动作if/else语句移除空格Range......
  • C语言函数大全-- q 开头的函数
    C语言函数大全本篇介绍C语言函数大全--q开头的函数1.qsort1.1函数说明函数声明函数功能voidqsort(void*base,size_tnmemb,size_tsize,int(*compar)(constvoid*,constvoid*));用于将指定数组按指定顺序进行排序参数:base:指向要排序的数组的......
  • go 枚举
    前言枚举类型是一种常用的数据类型,用于表示一组有限的、预定义的、具名的常量值。在枚举类型中,每个常量都是一个枚举值,它们之间的值相等且唯一。枚举类型通常用于表示一组相关的常量,比如星期、月份、性别等等。在其他语言里(比如 Java 和 C),都内置了枚举类型,而在 Go 语言里是......
  • 51单片机(普中板)函数库
    外部中断Into.c#include<REGX52.H>voidInto_Init(){IT0=1;//1:下降沿触发;0:低电平触发IE0=0;EX0=1;EA=1;PX0=1;//触发优先级}/*voidInto_Routine(void)interrupt0{}*/Into.h#ifndef__Into_H__#define__Into_......
  • go 环境搭建
     安装包下载安装包下载地址(下面3个都可以):国外官方:https://golang.org/dl/中文镜像:https://golang.google.cn/dl/中文网站:https://studygolang.com/dl(推荐)以选择直接安装版本(.msi)或者压缩包版本(.zip) windos编辑器:VSCode(免费) 或GoLand(收费) ......
  • 目录操作函数(mkdir rmdir rename chdir getcwd opendir closedir readdir dup dup2)
      /*创建文件#include<sys/stat.h>#include<sys/types.h>intmkdir(constchar*pathname,mode_tmode);参数:mode:权限移除文件#include<unistd.h>intrmdir(constc......
  • matlab中通过ode函数求解常微分方程附加简单的钟摆模型
    求解常微分方程常用matlab中的ode函数,该函数采用数值方法用于求解难以获得精确解的初值问题。ODE是一个包含一个独立变量(例如时间)的方程以及关于该自变量的一个或多个导数。在时域中,ODE是初始值问题,因此所有条件在初始时间t=0指定。Matlab有几个不同的函数(内置)用于ODEs的解决方案。......
  • PHP 中的默认(缺省)参数的函数
    前言在PHP中有一种函数,在调用的时候某些参数是可以缺省的,也就是说,在调用函数的时候可以传值,也可以不传值,如果在调用函数的时候传入具体的值就会使用传入的值,否则就会使用默认的值,默认的值在函数定义的时候就已经设置好,默认(缺省)参数的函数格式如下所示:mixedfunName(stringname,[,str......
  • Go | 一分钟掌握Go | 6 - 指针
     作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我!前言go的指针相比c++里面的已经容易很多了。c++的指针定义太多了:空指针、野指针、常量指针、指针常量,还有结构体指针,c++在指针这一块就复杂很多。我理解的Go的指针我理......