go 无法在多个赋值中将 *MUser 赋给 user (类型 user.MUser)
时间: 2023-03-05 14:44:34 浏览: 104
在 Go 中,当我们在多个赋值语句中将一个值赋给不同类型的变量时,编译器需要确保这些变量类型是兼容的,否则会出现类型错误。这可能是您遇到的问题。
如果您想要将一个指向 `MUser` 类型的指针赋给 `user.MUser` 类型的变量,需要使用类型转换。可以使用以下语法进行类型转换:
```
userM := *muser
var u user.MUser = user.MUser(userM)
```
在这个例子中,`*muser` 是一个指向 `MUser` 类型的指针,它的值被赋给了一个名为 `userM` 的变量。然后,我们使用类型转换将 `userM` 转换为 `user.MUser` 类型,并将其赋值给变量 `u`。
请注意,这种类型转换可能会导致数据丢失或精度丢失,因此请谨慎使用。
相关问题
mUser = SpUtils.getInstance().user mOrgInfo = SpUtils.getInstance().orgInfo val weakReference = WeakReference(this) mActivity = weakReference.get() if (setStatusBarLight()) { // QMUIStatusBarHelper.setStatusBarLightMode(this) } 这段代码优化以下
您可以考虑将这段代码拆分成多个函数或方法,以提高代码的可读性和可维护性,例如:
```kotlin
// 获取用户信息
fun getUserInfo(): UserInfo {
return SpUtils.getInstance().user
}
// 获取组织信息
fun getOrgInfo(): OrgInfo {
return SpUtils.getInstance().orgInfo
}
// 获取 Activity 引用
fun getActivityRef(): Activity? {
val weakReference = WeakReference(this)
return weakReference.get()
}
// 设置状态栏亮色模式
fun setStatusBarLightMode(): Boolean {
return setStatusBarLight() && QMUIStatusBarHelper.setStatusBarLightMode(this)
}
```
然后,在使用这些方法的地方直接调用即可,例如:
```kotlin
mUser = getUserInfo()
mOrgInfo = getOrgInfo()
mActivity = getActivityRef()
setStatusBarLightMode()
```
这样,代码会更加清晰易懂,并且方便后续的修改和维护。
如何将Bundle args = new Bundle(); args.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName); args.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, mPermGroupName); args.putParcelable(Intent.EXTRA_USER, mUser); args.putString(EXTRA_CALLER_NAME, mCaller); args.putLong(EXTRA_SESSION_ID, mSessionId); args.putString(GRANT_CATEGORY, mGranted);Buddle传输的参数数据改编成实例化对象set参数,在另一个地方去get它
要将Bundle传输的参数数据改编成实例化对象set参数,需要在目标对象中定义相应的变量,并提供相应的set方法。
例如,你可以定义一个名为MyObject的对象,它包含如下变量:
```
public class MyObject {
private String packageName;
private String permissionGroupName;
private User user;
private String caller;
private long sessionId;
private String granted;
// 以下省略构造方法和其他方法
}
```
然后,在MyObject类中提供相应的set方法,以便在其他地方设置这些参数:
```
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public void setPermissionGroupName(String permissionGroupName) {
this.permissionGroupName = permissionGroupName;
}
public void setUser(User user) {
this.user = user;
}
public void setCaller(String caller) {
this.caller = caller;
}
public void setSessionId(long sessionId) {
this.sessionId = sessionId;
}
public void setGranted(String granted) {
this.granted = granted;
}
```
接下来,在需要传递参数的地方,可以通过MyObject对象的set方法将参数值设置进去。例如:
```
MyObject obj = new MyObject();
obj.setPackageName(mPackageName);
obj.setPermissionGroupName(mPermGroupName);
obj.setUser(mUser);
obj.setCaller(mCaller);
obj.setSessionId(mSessionId);
obj.setGranted(mGranted);
```
最后,在另一个地方需要获取这些参数时,可以通过MyObject对象的get方法获取参数值。例如:
```
public void doSomething(MyObject obj) {
String packageName = obj.getPackageName();
String permissionGroupName = obj.getPermissionGroupName();
User user = obj.getUser();
String caller = obj.getCaller();
long sessionId = obj.getSessionId();
String granted = obj.getGranted();
// 使用获取到的参数值进行操作
}
```
阅读全文