You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity合约中声明myUser memory user时出现“Identifier not found or not unique”错误的技术求助

解决Solidity中"Identifier not found or not unique"错误

嘿,这个问题其实很好排查——你遇到的是标识符大小写不匹配的问题!

在你的合约里,你定义的结构体名称是MyUser(首字母大写):

struct MyUser {
    address publicKey;
    string userName;
}

但在createUser函数里声明变量时,你写成了小写开头的myUser:

myUser memory user;

Solidity是严格区分大小写的编程语言,编译器会把MyUser和myUser当成两个完全不同的标识符,所以它找不到名为myUser的类型,就抛出了"Identifier not found or not unique"的错误。

解决方法

只需要把变量声明的类型改成和结构体一致的MyUser就行,修改后的createUser函数代码如下:

function createUser(
    string memory _userName
) public {
    MyUser memory user; // 这里改成大写开头的MyUser
    user.publicKey = msg.sender;
    user.userName = _userName;
    users.push(user);
}

另外,也可以更简洁地直接在push的时候初始化结构体,让代码更紧凑:

function createUser(
    string memory _userName
) public {
    users.push(MyUser(msg.sender, _userName));
}

以后写Solidity代码的时候要注意,自定义类型(结构体、合约名等)的大小写要和使用时保持完全一致,避免这类低级错误~

内容的提问来源于stack exchange,提问作者Yurikaza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:27:25