Go语言结构应用实例

编写程序过程中,经常会用到结构。本程序给出了使用结构的简单实例。

Go语言程序:

// struct project main.go
package main

import (
    "fmt"
)

const N int = 10

type Node struct {
    figure  int
    digits1 [N]int
    digits2 [N]int
    sflag   bool
}

func main() {
    var n Node

    n.figure = 1
    n.digits1[0] = 1
    n.digits2[0] = 1
    n.sflag = true

    n2 := n
    n2.digits1[n2.figure] = 2
    n2.digits2[n2.figure] = 2
    n2.figure++
    n2.sflag = false

    n3 := n2
    n3.digits1[n2.figure] = 3
    n3.digits2[n2.figure] = 4
    n3.figure++

    output_node(&n)
    output_node(&n2)
    output_node(&n3)

}

func output_node(n *Node) {
    fmt.Printf("Figure =%d\n", n.figure)

    fmt.Printf("Array1: ")
    for i := n.figure - 1; i >= 0; i-- {
        fmt.Printf("%d ", n.digits1[i])
    }
    fmt.Println("")

    fmt.Printf("Array2: ")
    for i := n.figure - 1; i >= 0; i-- {
        fmt.Printf("%d ", n.digits2[i])
    }
    fmt.Println("")

    if n.sflag {
        fmt.Printf("SFlag=true\n")
    } else {
        fmt.Printf("SFlag=false\n")
    }

    fmt.Println("")
}

程序运行结果:

Figure =1
Array1: 1
Array2: 1
SFlag=true

Figure =2
Array1: 2 1
Array2: 2 1
SFlag=false

Figure =3
Array1: 3 2 1
Array2: 4 2 1
SFlag=false

程序说明:

1.不论指针还是变量,取结果元素都使用”.”运算符,比较方便。

2.参数传递时,结构通常是传指针。

Original: https://www.cnblogs.com/tigerisland/p/7563545.html
Author: 海岛Blog
Title: Go语言结构应用实例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535756/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Go语言:包管理基础知识

    起因是,遇到一个问题: 经查阅资料,很可能跟包管理有关,之前有了解过忘了就再学一遍顺便解决问题。 学习资料: GO111MODULE 是个啥? – 知乎 (zhihu….

    Go语言 2023年5月25日
    055
  • Sentinel-Go 源码系列(一)|开篇

    大家好呀,打算写一个 Go 语言组件源码分析系列,一是为了能学习下 Go 语言,看下别人是怎么写 Go 的,二是也掌握一个组件。 本次选择了 Sentinel-Go,一是对 Jav…

    Go语言 2023年5月25日
    058
  • Golang:手撸一个支持六个级别的日志库

    Golang标准日志库提供的日志输出方法有Print、Fatal、Panic等,没有常见的Debug、Info、Error等日志级别,用起来不太顺手。这篇文章就来手撸一个自己的日志…

    Go语言 2023年5月25日
    062
  • 自己实现一个Controller——精简型

    写在最前 controller-manager作为K8S master的其中一个组件,负责众多controller的启动和终止,这些controller负责监控着k8s中各种资源,…

    Go语言 2023年5月25日
    048
  • 踩了个DNS解析的坑,但我还是没想通

    hello大家好,我是小楼。 最近踩了个DNS解析的小坑,虽然问题解决了,但排查过程比较曲折,最后还是有一点没有想通,整个过程分享给大家。 背景 最近负责的服务要置换机器。置换机器…

    Go语言 2023年5月25日
    0101
  • go语言异常处理

    go语言异常处理 go语言引入了一个关于错误错里的标准模式,即error接口,该接口的定义如下: type error interface{ Error() string } 对于…

    Go语言 2023年5月29日
    055
  • AES加解密(golang <--> crypto-js)

    AES(Advanced Encryption Standard) 是一种对称加密算法,是比 DES 更好的对称加密算法类。 使用AES,在前后端之间传送密码等相关数据时,能简单高…

    Go语言 2023年5月25日
    043
  • Go Error 嵌套到底是怎么实现的?

    原文链接: Go Error 嵌套到底是怎么实现的? Go Error 的设计哲学是 「Errors Are Values」。 这句话应该怎么理解呢?翻译起来挺难的。不过从源码的角…

    Go语言 2023年5月25日
    060
  • Go语言之高级篇beego框架之controller调用model

    一、controller调用model 开发规范,就该把对数据库的操作写在model文件夹中。 示例: views/main.go routers/router.go models…

    Go语言 2023年5月29日
    057
  • Go语言 异常panic和恢复recover用法

    背景:Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会…

    Go语言 2023年5月29日
    046
  • Go语言实现大数开方程序

    Go语言的big包实现大数运算,但是有关大整数运算,似乎没有相应的开方程序。 这里给出的程序,实现了大整数的开方运算函数。该程序是基于大整数开方运算的算法实现的。 Go语言程序: …

    Go语言 2023年5月29日
    054
  • Go sort包

    sort包简介 官方文档Golang的sort包用来排序,二分查找等操作。本文主要介绍sort包里常用的函数,通过实例代码来快速学会使用sort包 sort包内置函数 sort.I…

    Go语言 2023年5月25日
    093
  • GO的URL合法性检查

    原文连接:https://www.zhoubotong.site/post/67.html Go 标准库的net/url包提供的两个函可以直接检查URL合法性,不需要手动去正则匹配…

    Go语言 2023年5月25日
    074
  • 使用 grpcurl 通过命令行访问 gRPC 服务

    如果环境不支持安装这种 GUI 客户端的话,那么有没有一种工具,类似于 curl 这样的,直接通过终端,在命令行发起请求呢? 答案肯定是有的,就是本文要介绍的 grpcurl。 首…

    Go语言 2023年5月25日
    074
  • gRPC,爆赞

    gRPC 这项技术真是太棒了,接口约束严格,性能还高,在 k8s 和很多微服务框架中都有应用。 作为一名程序员,学就对了。 之前用 Python 写过一些 gRPC 服务,现在准备…

    Go语言 2023年5月25日
    052
  • croncli 定时器命令(golang)

    定时器是执行任务时的常用功能,配置系统的定时任务太麻烦,所以就想用golang简单实现一个定时器命令。 定时器的参数包括: $ croncli -h 定时器命令 Usage: cr…

    Go语言 2023年5月25日
    050
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球