【Go语言刷题篇】Go从0到入门1:输出、变量、常量、字符串、指针与值的简单案例

简介: 本专栏系列都采用牛客的ACM刷题模式。

前言


本专栏系列都采用牛客的ACM刷题模式。

Q1:输出入门


题目要求:输出打印"Hello World!"

相关知识:

1、main函数是go语言程序的默认入口函数(主函数):func main()

2、go也类似其他函数一样,都是使用默认参数args,如fmt.Println(args…)

案例代码

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

Q2:定义变量并输出变量


题目要求:已知小明的信息(姓名:小明,年龄:23,性别:男),定义三个变量,分别表示姓名(string类型),年龄(int类型),性别(男true,女false,bool类型),然后按照姓名,年龄,性别的顺序,逐行输出对应的信息。

相关知识:

1、Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。

2、string,int,bool 都是基本数据类型。

3、Go语言声明变量的时候为其指定初始值,格式如下:var 变量名 类型 = 表达式。

4、Go语言可以使用自动判别的形式来进行快速定义即 age:=23 系统会自动判别其类型为int类型。

5、定义的时候可以统一定义,如下代码块

func main() {
  var (
    name string
      age  int
    sex  bool
  )

案例代码

package main
import (
    "fmt"
)
func main() {
//     name := "小明"
//     age := 23
//     sex := true
    var name string = "小明"
    var age int = 23
    var sex bool = true
    fmt.Println(name)
    fmt.Println(age)
    fmt.Println(sex)
}

Q3:常量


题目要求:定义三个常量来分别表示中国,英国,美国这三个国家的名称,并按照中国,英国,美国的顺序逐行打印。

相关知识:

1、Go语言的常量声明:const 变量名 类型 = 表达式。

2、对于定义string的时候不能使用单引号,‘国’这样的运行是会报错的。

案例代码

package main
import  "fmt"
func main() {
  const china string = "中国"
  const english string = "英国"
  const america string = "美国"
    fmt.Println(china)
    fmt.Println(english)
    fmt.Println(america)
}

Q4:值和指针


题目要求:给定两个变量a,b,判断两个变量的地址,值(a,b的地址取得)是否相等,将结果依次存入切片,并返回。

相关知识:

1、Go语言中的指针操作非常简单,只需要记住两个符号:&(取地址)和*(根据地址取值)

2、每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。

3、Go语言中使用&字符放在变量前面对变量进行“取地址”操作。 Go语言中的值类型(int、float、bool、string、array、struct)都有对应的指针类型,如:*int、*int64、*string等。


示例输入输出:

输入:1,2

返回值:[false,false]

案例代码

func equal( a int ,  b int ) []bool {
    // write code here
    return []bool {&a ==&b ,a==b}
}

Q5:拼接字符串


题目要求:给定一个字符串数组,将其拼接成一个字符串。

相关知识:

1、Go语言中使用for循环遍历切片。

2、G语言中使用“+”"可以拼接字符串。

示例输入输出:

输入:[“hello”,“-”,“world”]

输出:“hello-world”

案例代码

func join( s []string ) string {
    // write code here
    var res string
    for _,v := range s {
        res += v
    }
    return res
}

Q6:字符数量


题目要求:给定一个字符串,统计其中的字符个数(一个中文算一个)。

相关知识:

1、汉字是采用unicode编码,占三个字节。

2、字符传转化为rune数组。

3、rune是int32的别名(-231~231-1),对比byte(-128~127),可表示的字符更多。

4、len()可以求出rune数组的长度。


示例输入输出:

输入:“小明的英文名叫jack”

输出:11

案例代码

func count( s string ) int {
    // write code here
    return len([]rune(s))
}

Q7:回文数


题目要求:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

相关知识:

1、整型转化为字符串。

2、字符串的遍历。

案例代码:

import "strconv"
//import "fmt"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * @param x int整型 
 * @return bool布尔型
*/
func isPalindrome(x int) bool {
  // write code here
  var str string = strconv.Itoa(x)
  length := len(str)
  for i := 0; i < length/2; i++ {
    if str[i] != str[length-i-1] {
      return false
    }
  }
  return true
}
相关文章
|
26天前
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
|
27天前
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
27天前
|
存储 缓存 监控
企业监控软件中 Go 语言哈希表算法的应用研究与分析
在数字化时代,企业监控软件对企业的稳定运营至关重要。哈希表(散列表)作为高效的数据结构,广泛应用于企业监控中,如设备状态管理、数据分类和缓存机制。Go 语言中的 map 实现了哈希表,能快速处理海量监控数据,确保实时准确反映设备状态,提升系统性能,助力企业实现智能化管理。
34 3
|
27天前
|
存储 缓存 安全
Go 语言中的 Sync.Map 详解:并发安全的 Map 实现
`sync.Map` 是 Go 语言中用于并发安全操作的 Map 实现,适用于读多写少的场景。它通过两个底层 Map(`read` 和 `dirty`)实现读写分离,提供高效的读性能。主要方法包括 `Store`、`Load`、`Delete` 等。在大量写入时性能可能下降,需谨慎选择使用场景。
Go基础(复杂类型):指针
Go语言指针 Go 具有指针。 指针保存了变量的内存地址。 类型 *T 是指向类型 T 的值的指针。其零值是 nil。
1036 0
|
1月前
|
存储 Go
Go 语言入门指南:切片
Golang中的切片(Slice)是基于数组的动态序列,支持变长操作。它由指针、长度和容量三部分组成,底层引用一个连续的数组片段。切片提供灵活的增减元素功能,语法形式为`[]T`,其中T为元素类型。相比固定长度的数组,切片更常用,允许动态调整大小,并且多个切片可以共享同一底层数组。通过内置的`make`函数可创建指定长度和容量的切片。需要注意的是,切片不能直接比较,只能与`nil`比较,且空切片的长度为0。
Go 语言入门指南:切片
|
1月前
|
算法 安全 Go
公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
本文探讨了如何利用 Go 语言中的 Bloom Filter 算法提升公司局域网管理系统的性能。Bloom Filter 是一种高效的空间节省型数据结构,适用于快速判断元素是否存在于集合中。文中通过具体代码示例展示了如何在 Go 中实现 Bloom Filter,并应用于局域网的 IP 访问控制,显著提高系统响应速度和安全性。随着网络规模扩大和技术进步,持续优化算法和结合其他安全技术将是企业维持网络竞争力的关键。
51 2
公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
|
1月前
|
开发框架 前端开发 Go
eino — 基于go语言的大模型应用开发框架(二)
本文介绍了如何使用Eino框架实现一个基本的LLM(大语言模型)应用。Eino中的`ChatModel`接口提供了与不同大模型服务(如OpenAI、Ollama等)交互的统一方式,支持生成完整响应、流式响应和绑定工具等功能。`Generate`方法用于生成完整的模型响应,`Stream`方法以流式方式返回结果,`BindTools`方法为模型绑定工具。此外,还介绍了通过`Option`模式配置模型参数及模板功能,支持基于前端和用户自定义的角色及Prompt。目前主要聚焦于`ChatModel`的`Generate`方法,后续将继续深入学习。
294 7
|
1月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
90 20
|
1月前
|
存储 开发框架 Devops
eino — 基于go语言的大模型应用开发框架(一)
Eino 是一个受开源社区优秀LLM应用开发框架(如LangChain和LlamaIndex)启发的Go语言框架,强调简洁性、可扩展性和可靠性。它提供了易于复用的组件、强大的编排框架、简洁明了的API、最佳实践集合及实用的DevOps工具,支持快速构建和部署LLM应用。Eino不仅兼容多种模型库(如OpenAI、Ollama、Ark),还提供详细的官方文档和活跃的社区支持,便于开发者上手使用。
219 8