go interface stuct结构练习报错,结构体定义与main函数位置,结构体变量后加逗号“,”

import "fmt"

func main() {

	//var x interface{} =func(x int)string{

	//	return fmt.Sprintf("d:%d",x)

	//}

	//

	//switch v:=x.(type) {            // 局部变量v是类型转换后的结果

	//case nil:

	//	println("nil")

	//case*int:

	//	println(*v)

	//case func(int)string:

	//	println(v(100))

	//case fmt.Stringer:

	//	fmt.Println(v)

	//default:

	//	println("unknown")

	//}

	var x interface{} = func(x int) string {

		return fmt.Sprintf("d:%d", x)

	}

	switch v := x.(type) {

	case nil:

		println("nil")

	case *int:

		print(*v)

	case func(int) string:

		println(v(100))

	case fmt.Stringer:

		fmt.Println(v)

	default:

		print("unkown")

	}

	type MyIntergace interface{

		MyWriterFunc()

		MyReaderFunc()

	}

	type MyStrs struct{

		name string

		age int

	}

	

	func (in *MyStrs) MyWriterFunc(){

		fmt.Printf("MyWriterFunc")

	}

	func (in *MyStrs) MyReaderFunc(){

	fmt.Printf("MyReaderFunc")

	}

    var myvar MyIntergace=&MyStrs{

		name:"ssds",

		age:13

	}

	myvar.MyWriterFunc()

	myvar.MyReaderFunc()

}

报错:

.\test_interface.go:49:34: syntax error: unexpected { at end of statement

.\test_interface.go:57:9: syntax error: unexpected newline in composite literal; possibly missing comma or }

.\test_interface.go:59:2: syntax error: non-declaration statement outside function body

错误点1: 需要将结构体定义部分移除main外

因为Go 语言要求所有类型、函数和方法的声明都必须在它们被使用之前进行。换句话说,你不能在 main 函数中引用一个还没有被声明的类型或函数。

因此,你需要将所有的类型声明(比如 MyInterface 和 MyStrs)、方法声明以及变量声明都放在 main 函数之前。这样,当 main 函数开始执行时,所有的依赖项都已经准备好了。

(虽然将interface定义防在main中也跑的通,但是最好还是将其放在main外,保持代码风格一致)

错误点2,结构体的每个字段及其值后面都需要加“,”,主要是为了划分字段的界限,指明字段名的开始

var myvar MyInterface = &MyStrs{  
    name: "ssds",  
    age:  13,  
}

因此 纠正后的代码是:

package main

import "fmt"

type MyStrs struct {
	name string
	age  int
}
type Myinterface interface {
	MyWriterFunc()
	MyReaderFunc()
}

func (in *MyStrs) MyWriterFunc() {
	fmt.Printf("MyWriterFunc")
}
func (in *MyStrs) MyReaderFunc() {
	fmt.Printf("MyReaderFunc")
}
func main() {
	//var x interface{} =func(x int)string{
	//	return fmt.Sprintf("d:%d",x)
	//}
	//
	//switch v:=x.(type) {            // 局部变量v是类型转换后的结果
	//case nil:
	//	println("nil")
	//case*int:
	//	println(*v)
	//case func(int)string:
	//	println(v(100))
	//case fmt.Stringer:
	//	fmt.Println(v)
	//default:
	//	println("unknown")
	//}

	var x interface{} = func(x int) string {
		return fmt.Sprintf("d:%d", x)

	}
	switch v := x.(type) {
	case nil:
		println("nil")
	case *int:
		print(*v)
	case func(int) string:
		println(v(100))
	case fmt.Stringer:
		fmt.Println(v)
	default:
		print("unkown")
	}

	var myvar Myinterface = &MyStrs{
		name: "ssds",
		age:  13,
	}
	myvar.MyWriterFunc()
	myvar.MyReaderFunc()

}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决VirtualBox虚拟机启动失败的问题

一.出现的问题(未能启动虚拟电脑,由于物理网卡未找到) 一、错误信息分析 “未能启动虚拟电脑,由于物理网卡未找到”:这个错误通常是由于VirtualBox无法识别或连接到物理网卡造成的。可能是由于驱动程序问题、网络设置错…

2024年阿里云最便宜的轻量应用服务器与云服务器价格及优惠购买入口

2024年,阿里云推出了几款价格最便宜的轻量应用服务器和云服务器,其中轻量应用服务器2核2G3M公网带宽50GB 高效云盘活动价格61元1年,经济型e实例4核16G10M公网带宽100G ESSD Entry云盘活动价格最低只要30元/1个月,通用算力型u1实例…

pyskl手势/动作识别的实现与pytorch cuda环境部署保姆教程

恭喜你,找到这篇不需要翻墙就能够成功部署的方法。在国内布置这个挺麻烦的,其他帖子会出现各种问题不能完全贯通。便宜你了。。 实话5年前我用1080训练过一个基于卷积和ltsm的手势识别,实话实说感觉比现在效果好。是因为现在的注意力都在tra…

【Spring】Spring MVC入门

Spring MVC入门 一、什么是Spring Web MVC? 1.1 MVC定义 MVC是Model View Controller的缩写,是一种软件架构的设计模式,将软件系统分为模型、视图、控制器三个部分。 示意图如下: 可以看到,Controller作为一个“粘合剂”处于M…

Hadoop——Yarn基础架构

Hadoop——Yarn基础架构 Hadoop YARN(Yet Another Resource Negotiator)是Apache Hadoop生态系统中的一个子项目,它是用于集群资源管理的框架,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台&…

Mac 利用Homebrew安装JDK

一、安装JDK17 1.安装openjdk17 2.把homebrew安装的openjdk17软链接到系统目录: brew install openjdk17 sudo ln -sfn $(brew --prefix)/opt/openjdk17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk 一、检查是否安装成功 在Termina…

基于SSM的列车订票管理系统(含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的列车订票管理系统3拥有两种角色;管理员、用户 管理员:用户管理、车票管理、购票指南管理、系统管理等 用户:发布帖子、登录注册、购票等 1.…

Spring Boot 整合 Mockito:提升Java单元测试的高效实践

引言 在Java开发领域,Spring Boot因其便捷的配置和强大的功能而受到广泛欢迎,而Mockito作为一款成熟的单元测试模拟框架,则在提高测试质量、确保代码模块间解耦方面扮演着至关重要的角色。本文将详细介绍如何在Spring Boot项目中整合Mockito&…

千锤百炼算法系列之动态规划

题外话 这段时间,我必须把算法弄明白 这篇直接讲解动态规划所有细节! 前面那篇 千锤百炼之每日算法(一)-CSDN博客 也有关于动态规划的讲解,也非常详细 很简单,我成尊不就是了?!!! 正题 动态规划 这里我们主要是让大家明白什么是动态规划,怎么用动态规划解题 我就不用…

手动给docusaurus添加一个搜索

新版博客用docusaurus重构已经有些日子了,根据docusaurus的文档上也申请了Algolia,想一劳永逸的解决博客的搜索问题。但是流水有意,落花无情。 algolia总是不给我回复,我只能对着algolia的申请页面仰天长叹。 正常情况的申请 按照docusaur…

社区论坛小圈子小程序源码系统:自定义小程序管理社区圈子软件圈子系统系统开发-做社区圈子丨圈子论坛社区交友系统开源版小程序源码丨

简述 移动互联网的快速发展,微信小程序作为一种新型的应用形态,已经深入到人们的生活中。特别是对于社区论坛类应用,小程序版本可以更好地满足用户快速、便捷获取信息的需求。下面给大家分享一款社区论坛小圈子小程序源码系统。 在这个信息…

跨境电商MercadoLibre(美客多)平台预约号操作流程自动化系统

目录 一、前置配置准备 1. 安装Chrome插件 2. 添加预约配置 二、开始使用 MercadoLibre(美客多)于2021年10月18号上线了新预约入仓系统,在MercadoLibre美客多平台上,新入仓预约系统是一项非常重要的功能,它可以帮助…

2024华中杯数学建模挑战赛选题建议及各题思路来啦!

大家好呀,华中杯数学建模开始了,来说一下初步的选题建议吧: 首先定下主基调, 本次华中杯推荐选择C题目。难度方面A>B>C,A是优化类题目,难度较高,建议参考23国赛A优秀论…

STM32G431RBT6移植FreeRTOS

引言: 本文专门为参加了蓝桥杯嵌入式赛道的同学准备, 大家可能会有这样一个问题, 比完赛之后, 对于像继续使用STM32G431RBT6学习FreeRTOS的, 发现网上的教程使用的板子基本上都是F1和F4的, 其实呢&#xff…

《八》QSplitter拆分器以及QDockWidget窗口详解

QSplitter简介 QSplitter拆分器允许用户通过拖动子部件之间的边界来控制它们的大小。 单个拆分器可以控制任意数量的小部件。QSplitter的典型用法是创建几个小部件,并使用insertWidget()或addWidget()添加它们。 常用方法 默认情况下,QSplitter会动态…

甘特图是什么?如何利用其优化项目管理流程?

甘特图是项目管理软件中十分常见的功能,可以说每一个项目经理都要学会使用甘特图才能更好的交付项目。什么是甘特图?甘特图用来做什么?简单来说一种将项目任务与时间关系直观表示的图表,直观地展示了任务进度和持续时间。 一、甘特…

【k8s】:kubectl 命令设置简写启用自动补全功能

【k8s】:kubectl 命令设置简写&启用自动补全功能 1、设置kubectl命令简写2、启用kubectl自动补全功能 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(K8s)是一个强大的容器编排平台&#…

【话题】程序员如何搞副业,简单探讨下

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景前提条件打造私域广结朋友平台 技能转化为价值1. 副业途径2. 如何开展3. 未来趋势与建议4. 挑战与策略5. 规划与发展 文章推荐 背景 程序员不仅拥有将抽象概念转化…

极海APM32F003F6U7通过AEC-Q100车规级可靠性认证

行车安全是汽车行业考虑的第一要义,因此汽车电子MCU的可靠性尤为重要,极海APM32F003F6U7车规级MCU遵循AEC-Q100质量标准,确保汽车电子元器件在极端环境下的可靠性和稳定性,并顺利通过了AEC-Q100车规级可靠性认证。 关于AEC-Q100 …

Vitis HLS 学习笔记--ap_int.h / ap_fixed.h(2)-深度探究

目录 1. 前文回顾 1.1 简单背后的复杂 1.2 复杂性的来源 2. 关键代码 2.1 功能概述 2.2 关系梳理 2.3 理解构造函数二 2.4 理解HLS_CONSTEXPR 2.5 理解const volatile 3. 探究ap_int<8> c&#xff1b;经历了什么 4. 在调试中查看 1. 前文回顾 在《Vitis HLS…
最新文章