GO语言快速入门(比较乱)

news2024/12/29 14:05:59

一、环境安装

1、安装Go环境

1、官网下载

2、cmd-->go version

3、环境变量

GOROOT:go安装路径

GOPATH:go存放代码的路径

4、GOWorks新建三个文件

5、go env查看配置

2、安装编辑器

GoLand或者VSCode

3、HelloWorld

package main //一个程序只有一个main包

import "fmt"

func main(){
    fmt.Println("Hello World!")
}

运行:

go run 文件名.go

   

4、Go命令

修改环境值:go   env -w 字段=""

 二、基础语法

1、注释

单行注释 //

多行注释/**/

2、变量定义

package main

import "fmt"

func main(){
    var name string ="zhangdan"
    var age int=18
    //定义多个值
    var(

        name string//默认值 空
        age int//默认值 0
    )
    var a,b,c int
    fmt.Println(name)
}

package main

import "fmt"

func main(){

    // := 自动推导
    name := "zhangsan"
    var age int
    age=18
    //%T表示打印类型
    fmt.Println("%T",name)

    //%p 表示打印地址 
    fmt.Println("age:%d,内存地址:%p",age,&age)

    age=20
    //地址不会变

}

变量交换

package main

func main(){
    var a int=100
    var b int =200
    //交换a,b的值
    b,a=a,b
}

3、匿名变量

_ 空白标识符,任何赋给这个标识符的值将被抛弃

package main

import "fmt"

func test()(int ,int){
    return 100,200

}
func main(){
    a,_:=test()
    _,b:=test()
    fmt.Println(a,b)
}
//匿名变量不占用内存空间,不会分配内存

4、常量const

package main

func main(){
    //不能被修改,相当于final
    const URL string ="www.baidu.com"//显式定义
    const URL2="www.google.com"//隐式定义
    const a,b,c=3.14,"abc",false//同时定义多个

}

 iota 常量计数器

func main(){
    const(
        a=iota   //0
        b        //1
        c        //2
        d="hahh" //hahh
        e        //hahh
        f=100    //100
        g        //100
        h=iota   //7
        i        //8
    )
}

5、基本数据类型 

     布尔、数值、字符串   

//布尔型 false %t
    var isFlag bool
    fmt.Printf("%T,%t\n",isFlag,isFlag)
// 数值型 整形 0 %d
    uint8 0~255 别名byte
    uint16    rune
    uint32
    uint64
    int8 -127~128
    int16
    int32
    int64    int
    
//数值型 浮点型 0.0 %f
    默认6位小数,%.2f 保留两位小数
    float32 IEEE-754 32位浮点数
    float64 IEEE-754 64位浮点数
    complex64 32位实数和虚数
    complex128 64位实数和虚数
//字符串 string 空 %s
    双引号
    单引号会转为ASCⅡ编码表,unicode编码表,全世界文字,gbk全中国
转义字符 \

类型转换

a:=3 //int
b:=5.0 //float64
//将int类型的a转换为float64类型
c:=float64(a)

 整形不能转为布尔

6、运算符

算术运算符

        +、-、*、/、%、++(自增)、-- 

关系运算符

        ==、>、<、>=、<=、!=

逻辑运算符

        && 、||、!

位运算符

        &        位与,都是1,结果位1

        |        位或,都是0,结果为0

        ^        位异或,不同为1

        &^        位清空,a&^b,对于b上数值,如果为0,则取a对应位数值,为1,取0

        <<        左移,高位丢弃,低位补0,乘以2的n次方

        >>        右移,地位丢弃,高位补0,除以2的n次方

 7、基础阶段键盘输入

package main

func main(){

    var x int
    var y float64
    
    fmt.Println("请输入一个整数,一个浮点数:")
    fmt.Scanln(&x,&y)
    fmt.Printf("x:%d,y:%f",x,y)
}

8、流程控制

选择结构

func main(){
    var a int =15
    if a>0&&a<10{
        fmt.Println("A")    
    }else if a>=10&& a<90{
        fmt.Println("B")
    }else{
     fmt.Println("C")
    }

}
var a int=90

switch a{

case 90:
    fmt.Println("A")
case 80:
    fmt.Println("B")
case 50,60,70:
    fmt.Println("C")
default:
    fmt.Println("D")
}
switch默认匹配成功后不会执行其他case,如果需要执行其他case,可以使用fallthrough穿透case,break结束穿透

循环结构

func main(){
    for i:=1;i<10;i++{
        fmt.Println(i)

    }
}

        break结束循环

        continue结束当次循环

9、String

str:="hello"
//获取长度
    len(str)
//获取指定字节
    fmt.Pirntln(str[0])//104
    fmt.Printf("%c",str[0])//h
//字符串是一个个字符拼接而成


//for range循环 循环遍历数组、切片....
for i,v :=range str{

    fmt.Print(i) //下标
    fmt.Printf("%c",v)//值

}

  

三、函数

 1、定义

func funcName(param paramType)(returnType){

}

2、可变参数

func main(){
    sum:=getSum(1,2,3,4)
}

func getSum(nums...int)(int){
    sum:=0
    for i:=0;i<len(nums);i++{
        sum+=nums[i]
    }
    return sum
}
/*
注意:
    可变参数要放在列表最后
    一个函数参数列表中最多一个可变参数

*/

 3、值传递与引用传递

值传递:传递的是数据的副本,修改数据对原数据没影响

        基础类型、array、struct...

引用传递:传递的是地址,修改数据对原数据有影响

        切片:可以扩容的数据

        map、chan...

 4、defer

defer会将函数延迟到最后执行,多条defer入栈执行。

5、函数的数据类型

 func() 本身就是一个数据类型

func main(){
    fmt.Printf("%T",f1)    //func(int int)
    var f2 func(int,int)
    f2=f1
    f2(1,2)

}
func f1(a,b int){}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2116406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式学习[5]---装饰模式

文章目录 前言1. 原理阐述2. 举例2.1 人装饰方案一2.2 人装饰方案二2.3 人装饰方案三 总结 前言 近期在给一个已有的功能拓展新功能时&#xff0c;基于原有的设计类图进行讨论。其中涉及到了装饰模式&#xff0c;因为书本很早已经看过一遍&#xff0c;所以谈及到这个名词的时候…

Unity Adressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统&#xff0c;并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址&#xff08;Addressable&#xff09;时&#xff0c;您可以使用该资源的地址从任何地方加载它。无论资源是在…

php转职golang第二期

以下是一份简单的 Go 基本语法笔记&#xff1a; 变量与常量&#xff1a; • var 声明变量。• const 声明常量。数据类型&#xff1a; • 整型、浮点型、布尔型、字符串型等。流程控制&#xff1a; • if-else 语句。• for 循环。函数&#xff1a; • 定义和调用函数。数…

【Hot100】LeetCode—394. 字符串解码

目录 1- 思路栈实现四种情况处理 2- 实现⭐394. 字符串解码——题解思路 3- ACM 实现 原题链接&#xff1a;394. 字符串解码 1- 思路 栈实现四种情况处理 ① 遇到数字&#xff0c;进行倍数相加 、②遇到左括号&#xff0c;压栈之前的元素、③遇到右括号弹出&#xff0c;栈进行…

DFS 算法:洛谷B3625迷宫寻路

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法&#xff1a;记忆化搜索DFS 算法&#xf…

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation&#xff08;属性编辑&#xff09;、disentanglement&#xff08;解纠缠&#xff09;常用的两种做法&#xff1a;线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中&#xff0c;有一种非常简单的方法来引导G向某个方向进行生成&…

【Android】使用和风天气API获取天气数据吧!(天气预报系列之一)

【Android】使用和风天气API获取天气数据吧&#xff01;&#xff08;天气预报系列之一&#xff09; 古话说得好&#xff0c;要有天气预报&#xff0c;首先需要有天气&#xff0c;和预报。 今天给大家介绍一个好用的天气预报API&#xff1a;和风天气。以及webAPI的使用方法~&a…

【H2O2|全栈】关于HTML(3)HTML基础(二)

HTML相关知识 目录 HTML相关知识 前言 准备工作 标签的具体分类&#xff08;二&#xff09; 本文中的标签在什么位置使用&#xff1f; 本期前置知识点 超文本 超文本引用和源属性 图片标签 锚链接 iframe 锚点 预告和回顾 后话 前言 本系列博客将分享HTML相关…

JavaWeb后端开发总结(3)

AOP基础 AOP概述 首先我们要知道AOP是什么&#xff1f; 看下图 个人解析&#xff1a; AOP叫做面向切面编程&#xff0c;但是实际上就是面向方法编程 图中下面一部分是一个AOP的案例 AOP快速入门案例代码实现 案例&#xff1a;测出业务中各个业务方法所需的执行时间 如果…

怎么利用NodeJS发送视频短信

随着5G时代的来临&#xff0c;企业的数字化转型步伐日益加快&#xff0c;视频短信作为新兴的数字营销工具&#xff0c;正逐步展现出其大的潜力。视频群发短信以其独特的形式和内容&#xff0c;将图片、文字、视频、声音融为一体&#xff0c;为用户带来全新的直观感受&#xff0…

单片机DMA原理及应用详解(上篇)(附工程源码)

这篇文章详细介绍单片机的DMA原理和应用范例。希望我的分享能给你带来不一样的收获&#xff01; 目录 一、DMA简介 二、DMA原理 三、DMA中断 1. DMA中断的工作原理 2. DMA中断的优点 3. DMA中断的配置和处理 4. 应用场景 四、结语 一、DMA简介 1、DMA&#xff08;D…

数据分析训练模型后输出模型评估报告

数据分析训练模型后输出模型评估报告 1、模型评估指标 1.1、概念: A:n个正样本,检测到是真值的数量 B:m个负样本,检测到是真值的数量 C:n个正样本,检测到假值的数量 D:m个负样本,检测到假值的数量 1.2、准确率(Accuracy) 正确预测的样本数量与总样本数量的比值。…

轨迹规划-B样条

B样条究竟是干啥的&#xff1f;白话就是给出一堆点&#xff0c;用样条的方式&#xff0c;给这些点连接起来&#xff0c;并保证丝滑的。 同时B样条分为准均匀和非均匀&#xff0c;以下为准均匀为例。 参考链接1&#xff1a;https://zhuanlan.zhihu.com/p/50626506https://zhua…

IP宿主信息在不同领域的广泛应用

在网络世界中&#xff0c;IP地址作为网络设备的唯一标识&#xff0c;扮演着至关重要的角色。而IP宿主信息&#xff0c;通过IP与POI/AOI信息关联&#xff0c;能够帮助用户了解特定IP地址所属的详细信息。本文将深入探讨IP宿主信息在不同领域的广泛应用。 什么是IP宿主信息&…

汽车功能安全--TC3xx之PBIST、MONBIST

目录 1.PMS 电源监控速览 2.PBIST 3.MONBIST 4.小结 1.PMS 电源监控速览 英飞凌TC3xx芯片的四种硬件机制&#xff0c;分别是&#xff1a; PMS:PBIST: Power Built-in Self Test. MCU:LBIST: Logic Built-in Self Test. PMS:MONBIST: Monitor Built-in Self Test. VMT:MBI…

嵌入式基础1-模拟电路技术-3.放大电路

1. 基本放大电路 1. 放大概念与放大电路性能指标 2. 基本共射放大电路工作原理 3. 放大电路的分析方法 阻容耦合 4.案例 2. 多级放大电路 1. 多级放大电路的耦合方式 2. 多级放大电路动态分析 3. 差分放大电路 3. 集成运算放大电路 4. 放大电路的反馈 1. 反馈的基本概念…

云计算第四阶段----CLOUD 01-03

CLOUD Day01 一、虚拟化平台搭建 虚拟化技术产品介绍 #黄线标注的&#xff0c;都是比较主流且常用的虚拟化平台。 虚拟化与云计算的关系 虚拟化是一种技术&#xff0c;它允许在单个物理服务器上创建和运行多个虚拟机&#xff08;VMs&#xff09;&#xff0c;每个虚拟机都有其…

二叉树的相关选择题和基本方法(持续更新)

二叉树相关选择题和基本方法 选择题1选择题2选择题3选择题4选择题5选择题6选择题7选择题8选择题9选择题10选择题11选择题12选择题13选择题14选择题15选择题16选择题17选择题18选择题19选择题20选择题21选择题22实现二叉树的基本操作查询二叉树当中节点的个数遍历思想子问题思想…

[数据集][图像分类]熊分类数据集309张5类别黑熊泰迪北极熊等

数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;309 分类类别数&#xff1a;5 类别名称:["black","grizzly","panda","polar","teddy"] 每个类别图…

大数据之Flink(五)

15、Flink SQL 15.1、sql-client准备 启用Hadoop集群(在Hadoop100上) start-all.sh启用yarn-session模式 /export/soft/flink-1.13.0/bin/yarn-session.sh -d启动sql-client bin/sql-client.sh embedded -s yarn-sessionsql文件初始化 可以初始化模式、环境&#xff08;流/批…