Go 语言基础语法:Hello World 实例(涉及定义变量;fmt 包、Print、Println、Printf)

news2024/9/21 0:50:49

 Hello world实例

package main

import "fmt"

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

编译 + 运行

go run hello.go

Hello, World!

go run 做了编译和执行两动作,编译会生成 hello 文件,执行完成后此文件会被删除。

web展示

 

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "Hello, World!")
    })
    fmt.Println("Please Visit -  http://localhost:8899/")
    http.ListenAndServe(":8899", nil)
}

Golang 中常见的变量定义方法如下:

1var 定义变量

var 变量名 类型 = 表达式(类型可以不需要添加,自带类型推导)
package main
import "fmt"
func main(){
        //1.变量的声明
        var age int
        //2.变量的赋值
        age = 18
        //3.变量的使用
        fmt.Println("age = ",age);
        //声明和赋值可以合成一句:
        var age2 int = 19
        fmt.Println("age2 = ",age2);
        // var age int = 20;
        // fmt.Println("age = ",age);

}

2、类型推导方式定义变量

a 在函数内部,可以使用更简略的 := 方式声明并初始化变量。
注意: 短变量只能用于声明局部变量,不能用于全局变量的声明
变量名 := 表达式(注意:冒号和=要挨着 冒号前和等于号后空格 美观)
错误展示:

package main

import "fmt"

func getuser() (string, int) {
	return "远坂凛",10
}
func main(){

	// var username = "卫宫士郎"
	// fmt.Println(username)
	// var (
	// 	username string = "卫宫士郎"
	// 	age int = 20
	// 	sex string = "男"

	// )
	// fmt.Println(username,age,sex)
	// 变量命名法
	// 变量不能重复命名,但是可以重复赋值
	var username,age = getuser()
	fmt.Println(username,age)
	// 短变量命名法
	a,b,c := 19,20,"archer"
	fmt.Printf("%v.%v,%v",a,b,c)
}

支持一次性声明多个变量(多变量声明)

package main
import "fmt"
//全局变量:定义在函数外的变量
var boyname = "卫宫士郎"
var boyage = 19
//全局变量一次性声明:
var (
        girlage = 20
        girlname = "远坂樱"
)
func main(){
        //定义在{}中的变量叫:局部变量
        //第一种:变量的使用方式:指定变量的类型,并且赋值,
        var num int = 22
        fmt.Println(num)
        //第二种:指定变量的类型,但是不赋值,使用默认值 
        var num2 int
        fmt.Println(num2)
        //第三种:如果没有写变量的类型,那么根据=后面的值进行判定变量的类型 (自动类型推断)
        var num3 = "Archer"
        fmt.Println(num3)
        //第四种:省略var,注意 := 不能写为 =   
        sex := "男"
        fmt.Println(sex)
        fmt.Println("------------------------------------------------------------------")
        //声明多个变量:
        var a,b,c int
        fmt.Println(a)
        fmt.Println(b)
        fmt.Println(c)
        var d,name,e = 10,"sabar",169
        fmt.Println(d)
        fmt.Println(name)
        fmt.Println(e)
        garde,height := 6.9,100.6
        fmt.Println(garde)
        fmt.Println(height)
        fmt.Println(boyname)
        fmt.Println(boyage)
        fmt.Println(girlage)
        fmt.Println(girlname)
}

匿名变量

在使用多重赋值时,如果想要忽略某个值,可以使用 匿名变量 (anonymous variable)。 匿
名变量用一个下划线 _ 表示,例如:

 

package main

import "fmt"
func varinfo()(string,int){
	return "远坂凛",21
}
func main() {
	name,age := varinfo()
	fmt.Printf("MY name is %v,age is %v",name,age)

}
package main

import "fmt"
func varinfo()(string,int){
	return "远坂凛",21
}
func main() {
	_,age := varinfo()
	fmt.Printf("age is %v",age)

}

 匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

注意事项:

1 、函数外的每个语句都必须以关键字开始(var、 const func 等)
2 :=不能使用在函数外。
3 _ 多用于占位,表示忽略值。

fmt 包、Print、Println、Printf

Go 中要打印一个值需要引入 fmt
import "fmt"

fmt 包里面给我们提供了一些常见的打印数据的方法,比如: Print Println Printf 在我
们实际开发中 Println Printf 用的非常多。

1、Print 和 Println 区别:

一次输入多个值的时候 Println 中间有空格 Print 没有

Println 会自动换行,Print 不会

2Println Printf 区别: 

Printf 是格式化输出,在很多场景下比 Println 更方便,举个例子:
package main

import "fmt"
func main() {
	var(
	name = "卫宫士郎"
	age = 19
	servant = "sabar"
	)
	fmt.Println("我的名字是:" ,name,"年龄:",age,"servant为:",servant)
	fmt.Printf("我的名字是%v,年龄为%v,servant为%v",name,age,servant)
}
Printf 中的占位符与后面的数字变量一一对应。
例如: %d 是占位符,表示数字的十进制表示。

 Go 语言中的注释

行注释 //     VSCode快捷键:ctrl+/  再按一次取消注释
块注释(多行注释) /**/        VSCode快捷键:shift+alt+a 再按一次取消注释
注意:块注释中不可以嵌套块注释

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

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

相关文章

STM32外设系列—L298N

文章目录 一、L298N简介二、L298N电路图三、L298N使用方法四、L298N驱动电机实例4.1 麦克纳姆轮简介4.2 定时器PWM配置4.3 智能车行驶控制 五、拓展应用 一、L298N简介 L298N是SGS公司生产的一款通用的电机驱动模块。其内部包含4路逻辑驱动电路,有两个H桥的高电压大…

java并发编程 3:synchronized与锁(重点)

目录 共享问题synchronized锁及使用synchronized代码块synchronized 修饰成员方法synchronized 修饰静态方法 变量的线程安全分析成员变量和静态变量是否线程安全局部变量是否线程安全常见线程安全类 synchronized底层原理Java对象头Monitor管程字节码看原理 锁状态及转换四种锁…

vscode 快速修复(quick fix) 快捷键(Ctrl + .)被占用问题解决方法

vscode 快速修复(quick fix) 快捷键(Ctrl .)被占用 微软拼音的中/英文标点切换的快捷键为Ctrl .,与 vscode 快速修复(quick fix)快捷键冲突。修复方法如下: 切换到微软拼音,在输入法中或英字上,点击右键。 再点设置 - 按键。 …

MTK平台WLAN的Roaming机制和案例log解析

一 、WLAN漫游简介 [百度百科]:当网络环境存在多个相同SSID的AP,且它们的微单元互相有一定范围的重合时,无线用户可以在整个WLAN覆盖区内移动,无线网卡能够自动发现附近信号强度最大的AP,并通过这个AP收发数据,保持不间断的网络连接,这就称为无线漫游。 简单来说:WLA…

Flink中时间和窗口

文章目录 一、时间定义二、水位线(Watermark)1、概念2、水位线特征3、生成水位线3.1 水位线生成策略(Watermark Strategies)3.2 Flink 内置水位线生成器3.3 自定义水位线策略 4、水位线的传递 三、窗口(Window)1、概念2、窗口分类2.1 驱动类型分类2.2 窗…

chatgpt赋能python:Python输入之后的运行过程

Python输入之后的运行过程 在Python中,输入是必不可少的一部分,它使我们能够更加交互和动态地使用这门语言。在本篇文章中,我们将介绍Python输入的运行过程,包括如何读取和处理输入以及输入与程序运行的交互方式。 什么是Python…

ZLMediaKit 的安装及使用介绍

ZLMediaKit 介绍 ZLMediaKit是一个基于C开发的开源流媒体服务器。它提供了高性能的音视频处理能力,支持常见的流媒体协议,如RTSP、RTMP、HLS和HTTP-FLV,并且具有低延迟和高并发处理能力。 开源地址:https://github.com/xia-chu/…

抖音seo账号矩阵系统源码代开发组件

一.开发矩阵系统的项目背景: 目录 一.开发矩阵系统的项目背景: 二.短视频矩阵系统SaaS模板组件通常包含以下几个方面的内容: 三.抖音SEO账号矩阵系统源码的技术搭建过程可以分为几个步骤: 1.确定系统的需求和目标&#xff0c…

DFS深度优先搜索

目录 一、DFS的概念DFS的定义DFS的搜索方式DFS采用的数据结构DFS的特点 二、DFS的实战应用1.排列数字2.n-皇后问题 一、DFS的概念 DFS的定义 DFS(Depth-First Search)深度优先搜索,是一种常用的图遍历算法,用于在图或树数据结构…

金蝶云星空财务软件被locked勒索病毒攻击后如何更快解密数据库数据?

金蝶云星空财务软件是一款广泛应用于企业财务管理领域的软件,然而,近期很多企业的金蝶云星空财务软件遭受到了locked勒索病毒的攻击,导致数据库数据被加密。而这次的locked勒索病毒采用了新的加密形式,它不仅能够扫描出各种软件系…

数据结构--顺序表VS链表

数据结构–顺序表VS链表 逻辑结构 存储结构 顺序表: 优点:支持随机存取、存储密度高 缺点:大片连续空间分配不方便,改变容量不方便 链表: 优点:离散的小空间分配方便,改变容量方便 缺点:不可随机存取,存储密度低 基本…

从零开始 Spring Boot 49:Hibernate Entity Lifecycle

从零开始 Spring Boot 49:Hibernate Entity Lifecycle 图源:简书 (jianshu.com) 本文将介绍 Hibernate 的 Session 接口,以及如何用 Session 的相关 API 转换实体(Entity)的生命周期状态。 如果缺少的 JPA 和 Hiberna…

ubuntu18.04 ros报错Command ‘roscore‘ not found

问题描述 git clone https://github.com/ros/catkin.gitcd catkingit branch melodic-develgit checkout melodic-develmkdir buildcd buildcmake …make -j8 && sudo make installcd .. sudo python2 setup.py installsudo python3 setup.py install出现问题 hua…

ADB命令(app自动化测试底层技术)

一、adb相关知识体系 1,adb的使用场景 操作手机设备 app自动化测试2,adb测试体系 app自动化测试-appium 遍历测试-appcrawier app性能测试 app专项测试 STF设备管理平台 云测平台 兼容性测试 二、adb 基础 1,什么是adb Adb是用来操作Andro…

spark、pyspark 常用的模版 demo 网址

1、我自己有时候用百度或者其他的搜索出来的spark 常用案例,质量有的好有的差有时候就很烦。特地分享一个我常用的质量高的网站地址 https://sparkbyexamples.com/pyspark/pyspark-collect/

进阶2:JVM 启动参数

目录 jvm启动参数 参数分类 系统属性 功能解析 运行模式 jvm有两种运行模式 堆内存 设置堆内存 GC相关 GC 日志相关的参数 分析诊断 指定垃圾收集器相关参数 JavaAgent 什么是Java agent 常见问题 视频 前言 这堂课程不用过多的记忆,自身有印象即可…

Vue中Object.defineProperty

放到Object.defineProperty中比直接写在person对象中更灵活&#xff0c;可以设置的属性更多 <script>let person{name:张三,age:男}Object.defineProperty(person,age,{value:18,enumerable:true, //控制属性是否可以被枚举&#xff0c;默认值是falsewritable:true, //控…

无人机动力测试台-15公斤级-Flight Stand 15

Flight Stand 15测试台通过测量电机和螺旋桨的拉力、扭矩、转速、电流、电压、温度、螺旋桨效率和电机效率来精准地描述和评估无人机动力系统的性能。 产品应用 Flight Stand 15测试台可以用于以下方向&#xff1a; 实时动态测试 FS15 Pro的1000 Hz采样率使测试成为可能&…

Chrome 插件开发覆写xhr请求

这几天搞chrome谷歌浏览器插件遇到个问题 我想拦截网页请求&#xff0c;并把数据传递到下一个子窗口。获取responsebody内容 background.js 单纯靠sendmessage实现不了通讯 chrome.runtime.sendMessage({data: e.data.responseText,type:ajaxResponse}); 最开始的时候想用chr…

基于matlab使用自动要素匹配查找图像旋转和缩放(附源码)

一、前言 此示例演示如何自动确定一对图像之间的几何变换。当一个图像因旋转和缩放而相对于另一个图像失真时&#xff0c;请使用 和 查找旋转角度和比例因子。然后&#xff0c;您可以转换扭曲的图像以恢复原始图像。 二、步骤 1&#xff1a;读取图像 将映像引入工作区。 三、…